【问题标题】:Typeorm error with unique:true in entity instance实体实例中具有唯一性的 Typeorm 错误:true
【发布时间】:2019-07-08 19:47:53
【问题描述】:

这是我的错误: QueryFailedError: ER_BLOB_KEY_WITHOUT_LENGTH: BLOB/TEXT 列“用户名”在没有密钥长度的密钥规范中使用

如果我删除 unique:true 一切都会好起来的!

进口{ 实体, PrimaryGeneratedColumn, 创建日期列, 专栏,enter code here 插入前, } 来自'typeorm';

import * as bcrypt from 'bcryptjs';
import * as jwt from 'jsonwebtoken';
import { response } from 'express';
//utilizzo Entity da typeorm e creo la tabella User Entity('User)
@Entity('user')
export class UserEntity {
  @PrimaryGeneratedColumn('uuid')
  id: string;

  @CreateDateColumn()
  created: Date;

  @Column({
    type: 'text',
    unique: true,
  })
  username: string;

  @Column('text')
  password: string;

  @BeforeInsert()
  async hashPassword() {
    this.password = await bcrypt.hash(this.password, 10);
  }
  toResponseObject(showToken:boolean = true) {
    const { id, created, username,token } = this;

    const responseObject =  { id, created, username,token };
    if(showToken){
      responseObject.token = token
    }
    return responseObject;
  }

  async comparePassword(attempt: string) {
    return await bcrypt.compare(attempt, this.password);
  }

  private get token() {
    const { id, username } = this;
    return jwt.sign({
      id,
      username,
    },process.env.SECRET,{expiresIn:"7d"})
  }
}

【问题讨论】:

    标签: node.js entity typeorm


    【解决方案1】:

    你可以,但我认为实体旁边的唯一性会起作用

    @Entity('users')
    @Unique(['email'])
    

    【讨论】:

      【解决方案2】:

      如果我理解正确,您不能将 unique 与文本列结合使用。 对我来说,解决方案是将类型切换为 varchar。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-07
        • 2014-04-17
        • 2016-08-30
        • 1970-01-01
        相关资源
        最近更新 更多