关联表上的findOrCreate

时间:2017-02-23 13:56:17

标签: sequelize.js

一个类似的问题被问到here,但没有一个有意义的答案。

假设我有两个表,用户和项目。 我们希望在这两个实体之间建立n:m关系。

我们创建

Project.belongsToMany(User, {
  through: UserProjectAssociation,
});

现在, 如果我做

myProject.addUser(1) // where projectId is 1 and userId is 1
这是有效的。 但是如果我再次尝试完全相同的操作,它就会失败(因为projectId和userId当然是唯一的。 我想做的是

model.UserProjectAssociation.findOrCreate({
    where: {
      UserId: userId,
      ProjectId: projectId,
    }
  }

但我找不到关于findOrCreate api的任何参考,关于如何在关联表上调用它。

最好的方法是什么?该命令的预期结果将是记录(刚刚插入或已经存在)。

类似的问题是删除记录。 (如果记录(userId:1,projectId:1)存在则删除它,如果不存在,则不执行任何操作。

答案

正如@piotrbienias在评论中所指出的,语法完全相同。确保数据库支持所需的隔离级别。 (在这种情况下,SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ)。

0 个答案:

没有答案