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

时间:2017-11-23 12:02:36

标签: mysql node.js sequelize.js

我正在使用Sequelize与NodeJS和MySql。 (最新版本)

我有一个用户模型 -

  1. 'id'和唯一主键。 'id'设置为自动增量。
  2. 一些用户详细信息,例如firstName,lastName,email等。
  3. 另外两个唯一键(在续集模型和数据库中标记为唯一) - “用户名”和“电子邮件”
  4. 我正在使用'findOrCreate'方法来创建或查找。我的代码创建一个记录,如果它不存在但抛出一个UniqueConstraintError(ER_DUP_ENTRY) - >当我尝试查找此记录时,“用户名”字段上的SequelizeUniqueContraintError。基本上,findOrCreate尝试第二次创建记录而不是找到它。

      

    我能够通过手动执行查找来解决此问题,如果找不到的话   然后创造。但是我需要'findOrCreate'方法返回的标志   这有助于确定是否创建或找到了记录。

    有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

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

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

  

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

请参阅官方教程中提供的示例。 here