我正在使用Sequelize与NodeJS和MySql。 (最新版本)
我有一个用户模型 -
我正在使用'findOrCreate'方法来创建或查找。我的代码创建一个记录,如果它不存在但抛出一个UniqueConstraintError(ER_DUP_ENTRY) - >当我尝试查找此记录时,“用户名”字段上的SequelizeUniqueContraintError。基本上,findOrCreate尝试第二次创建记录而不是找到它。
我能够通过手动执行查找来解决此问题,如果找不到的话 然后创造。但是我需要'findOrCreate'方法返回的标志 这有助于确定是否创建或找到了记录。
有人可以帮忙吗?
答案 0 :(得分:1)
我能够通过在'where'子句中将唯一键传递给模型的'findOrCreate'方法并在'defaults'子句中为所有其他表属性设置值来解决这个问题。
对于Eg。 - Employee.findOrCreate({where: {employeeId: 'ABCD1234'}, defaults: {role: 'Analyst'}});
其中employeeId是唯一键。 (我假设主键'id'字段设置为自动增量)
请参阅官方教程中提供的示例。 here