sequelize实例中的set和add方法有什么区别?

时间:2018-07-23 02:16:08

标签: sequelize.js

医生说:

  • 添加:与此关联一个或多个目标行。
  • 设置:通过传递一组持久化实例或其主键来设置关联的模型。

由于文档未提供任何示例,因此我感到非常困惑。是add将添加Foreignkey到关联的行,而Set会将它的forreignkey设置到关联的行吗?

1 个答案:

答案 0 :(得分:2)

让我们看一个 1:M 示例:项目有很多任务

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

使用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