Sequelize findOrCreate 在具有附加唯一键的模型上返回 SequelizeUniqueContraintError

cod*_*kie 4 mysql node.js sequelize.js

我将 Sequelize 与 NodeJS 和 MySql 一起使用。(最新版本)

我有一个用户模型 -

  1. “id”和唯一主键。“id”设置为自动递增。
  2. 一些用户详细信息,例如名字、姓氏、电子邮件等。
  3. 两个额外的唯一键(在续集模型和数据库中标记为唯一)-“用户名”和“电子邮件”

我正在使用“findOrCreate”方法来创建或查找。如果记录不存在,我的代码会创建一条记录,但当我尝试查找此记录时,会在“用户名”字段上抛出 UniqueConstraintError (ER_DUP_ENTRY) --> SequelizeUniqueContraintError 。基本上,findOrCreate 尝试第二次创建记录而不是查找它。

我能够通过手动查找来解决此问题,如果找不到,则创建。但我需要“findOrCreate”方法返回的标志,它有助于确定是否创建或找到记录。

有人可以帮忙吗?

cod*_*kie 5

我能够通过将唯一键传递给“where”子句中模型的“findOrCreate”方法并在“defaults”子句中设置所有其他表属性的值来解决此问题。

对于例如。-Employee.findOrCreate({where: {employeeId: 'ABCD1234'}, defaults: {role: 'Analyst'}});

其中,employeeId 是唯一键。(我假设主键“id”字段设置为自动增量)

请参考官方教程中提供的示例。这里