Sequelize:关联的setter不会为它更新简单的成员

时间:2015-01-20 11:39:15

标签: node.js associations sequelize.js

我有StudentsClasses,他们之间有一个hasMany关联。 我这样做:

myStudent.setClasses(ids). then(function(result) {
   console.log(myStudent.Classes);
});

问题:

  1. result参数在then-handler中意味着什么?
  2. 为什么myStudent.Classes与我所做的setClasses()更改保持同步?
  3. 如何让Sequelize更新简单的Classes成员?我需要向调用者返回一个简单的JSON响应。

1 个答案:

答案 0 :(得分:1)

  1. 根据docsresult在将Classes方法发送到.setClasses时会与之关联ids

    因此,您的Classes参数实际上应该是Class.findAll({where: {id: ids}}) .on('success', function (classes) { myStudent.setClasses(classes) .on('success', function (newAssociations) { // here now you will have the new classes you introduced into myStudent // you say you need to return a JSON response, maybe you could send this new associations }) }) ,也许您应该在之前要求它们

    myStudent
  2. 它没有更新,因为有关对象关联的查询不依赖于您的原始对象(result)。您应该在现有的newAssociations数组中添加新的关联(在您的示例中为myStudent.Classes var,Class.findAll({where: {id: ids}}) .on('success', function (classes) { myStudent.setClasses(classes) .on('success', function (newAssociations) { myStudent.Classes = myStudent.Classes || []; myStudent.Classes.push(newAssociations); // guessing you're not using that myStudent obj anymore res.send(myStudent); }) }) )。也许reloading您的实例也可以正常运行。

    Classes
  3. 我希望我用之前的两个答案回答这个问题,如果没有,你能否通过更新{{1}}成员来解释你的意思?