Sequelize: setter for association 不更新它的简单成员

Sequelize: setter for association does not update simple member for it

我有 StudentsClasses,它们之间有 hasMany 关联。 我这样做:

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

问题:

  1. then-handler 中的result 参数是什么意思?
  2. 为什么 myStudent.Classes 没有更新我所做的 setClasses() 更改?
  3. 如何让 Sequelize 更新简单的 Classes 成员?我需要 return 一个简单的 JSON 回复来电者。
  1. 根据 docs,当将它们发送到 .setClasses 方法时,result 将是关联的 Classes(在您的情况下)。

    因此,您的 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
          })
        })
    
  2. 它没有更新,因为关于对象关联的查询不依赖于您的原始对象 (myStudent)。您应该在现有的 myStudent.Classes 数组中添加新关联(result var,在您的示例中,newAssociations,在我的示例中)。也许 reloading 您的实例也应该可以正常工作。

    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);
          })
      })
    
  3. 我希望我用前两个答案回答了这个问题,如果没有,你能解释一下你更新Classes成员的意思吗?