【问题标题】:Sequelize findOrCreate returns SequelizeUniqueContraintError on a model with an additional unique keysSequelize findOrCreate 在具有附加唯一键的模型上返回 SequelizeUniqueContraintError
【发布时间】:2018-05-07 09:32:30
【问题描述】:

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

我有一个用户模型 -

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

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

我可以通过手动查找来解决这个问题,如果没有找到 然后创建。但我需要“findOrCreate”方法返回的标志 这有助于确定是否已创建或找到记录。

有人可以帮忙吗?

【问题讨论】:

标签: mysql node.js sequelize.js


【解决方案1】:

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

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

其中employeeId 是唯一键。 (我假设主键 'id' 字段设置为 Auto Increment)

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

【讨论】:

    猜你喜欢
    • 2018-04-05
    • 2023-03-26
    • 1970-01-01
    • 2015-06-15
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多