Ошибка типа с уникальным: true в экземпляре объекта - PullRequest
0 голосов
/ 14 февраля 2019

это моя ошибка: QueryFailedError: ER_BLOB_KEY_WITHOUT_LENGTH: столбец BLOB / TEXT 'username', используемый в спецификации ключа без длины ключа

, если я удаляю unique: true, все идет нормально!

import {Entity, PrimaryGeneratedColumn, CreateDateColumn, Column, enter code here BeforeInsert,} из '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"})
  }
}

1 Ответ

0 голосов
/ 28 мая 2019

Если я правильно понимаю, вы не можете использовать уникальный в сочетании с текстовым столбцом.Для меня решением было переключить тип на varchar.

...