这是我的错误: QueryFailedError:ER_BLOB_KEY_WITHOUT_LENGTH:键规范中使用的BLOB / TEXT列“用户名”,没有键长
如果我删除unique:true,一切正常!
导入{
实体,
PrimaryGeneratedColumn,
CreateDateColumn,
列,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"})
}
}
答案 0 :(得分:0)
如果我对它的理解正确,则不能将unique与文本列结合使用。 对我来说,解决方案是将类型切换为varchar。
答案 1 :(得分:0)
你可以,但是在实体旁边的 Unique 我认为它会起作用
@Entity('users')
@Unique(['email'])