首页 > 解决方案 > sequelize 实例中的 set 和 add 方法有什么区别?

问题描述

文档说:

由于文档没有提供任何示例,我发现它非常混乱。add 是否会将外键添加到关联行,而 Set 会将其的 forreignkey 设置为关联行?

标签: sequelize.js

解决方案


让我们看一个1:M的例子:Project 有很多 Tasks

使用 set “不在传递数组中的所有内容都将取消关联”。这意味着如果您在同一个项目上第二次设置任务,您将替换之前的任务。

而使用 add,您不必担心旧任务被替换;将添加新旧任务

project.setTasks([task1, task2]).then(() => {
  // saved!
})

// remove the association with task1
project.setTasks([task2]).then(associatedTasks => {
  // you will get task2 only
})

作为副作用,将一个空数组传递给 set 将删除所有任务

// remove 'em all
project.setTasks([]).then(associatedTasks => {
  // you will get an empty array
})

// or remove 'em more directly
project.removeTask(task1).then(() => {
  // it's gone
})

http://docs.sequelizejs.com/manual/tutorial/associations.html#associating-objects


推荐阅读