当前位置: 首页 > 知识库问答 >
问题:

实体实例中唯一为true的TypeForm错误

蔡弘扬
2023-03-14

这是我的错误:QueryFailedError:ER_BLOB_KEY_,不带长度:BLOB/键规范中使用的文本列“username”,不带键长度

如果我删除唯一:真正的一切都好!

从typeorm导入{Entity, PrimaryGeneratedCol一身, CreateDateCol一身,在这里输入codeBeforeInsit,};

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"})
  }
}

共有2个答案

龙飞文
2023-03-14

你可以但唯一的旁边的实体我想这将是工作

@Entity('users')
@Unique(['email'])
盖昀
2023-03-14

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

 类似资料:
  • 我创建了一个“文档”实体: 例如 多个文档可以与不同的实体类型相关:post、userProfile等 例如,在发布实体中,我有几个字段,它们都指定文档关系。 我不清楚如何使文档关系双向。我曾希望在文档上有一个字段,如: 这样,如果我查询文档实体的父关系,我会得到如下结果: 但是Typeorm似乎想让我为文件实体上的每个父关系字段定义一个精确的匹配字段,比如: 为了简单起见,本例中没有M:N关系:

  • 最好的例子是需要持久化实体。我有以下候选项来为用户分配唯一标识符: < li >分配后端(NDB、MySQL等)提供的密钥。). < li >通过某些服务(如系统时钟)手工制作唯一标识符。 < li >像emailId这样的属性。 举一个详细视图的简单例子,我们经常有一个用户的详细显示,比如,如果我们保持emailId作为唯一ID,那么用户有可能在某一天更改其电子邮件ID并破坏它。 哪个是识别同一

  • 我有一个Grails应用程序,它有一堆域类,一些具有许多字段,其中一些与所讨论的域类具有关系。对于这个特殊的应用程序,我只有一个“约束”,那就是每个域类的每个实例都必须是唯一的。我不关心一个任意字段是否在同一域类的多个实例中具有相同的值,只要每个实例由该域类中的其他某个字段的值使其唯一。所以基本上,我希望验证发生在域类实例级别,而不是域类字段级别。现在,我正在使用非常groovy的注释来生成我的和

  • 我有3个节点的hazelcast服务器集群,每个节点都启动了hazelcast客户端。hazelcast客户端使用智能路由,使用客户端/服务器模式。 我收集通过IExecutorService和ClientService连接到Hazelcast服务器集群的客户端列表。每个Hazelcast客户端中的getConnectedClients()。在获取列表后,我想循环访问客户端的获取列表,并将其与自己

  • 我正在使用JPA 如果我有一堆相关的实体,如下所示: 祖父母实体有许多父实体(一个实体)。使用联接表持久化 父实体有一个子实体(OneToOne)。在父表中使用child\u uuid持久化 如果我只获得了子唯一密钥,我如何获得祖父母实体? 我的想法是一个有3个连接的查询-子连接到父连接,父连接到表,将表连接到祖父母。这是最好的方式吗?

  • 当我将Java EE应用程序部署到Glassfish时,我有一个非常奇怪的问题。我有一个Eclipse EAR项目,它引用了一个Web项目(包含一个servlet),一个EJB项目(有一个EJB)和一个JPA项目(有一个@Entity)。在我的 servlet 中,我调用 EJB,它又执行以下查询: 在上面代码的第三行,我得到了一个异常: 我已经调试了上面提到的Hibernate类,即Metamo