Sequelize: setter for association 不更新它的简单成员
Sequelize: setter for association does not update simple member for it
我有 Students
和 Classes
,它们之间有 hasMany 关联。
我这样做:
myStudent.setClasses(ids). then(function(result) {
console.log(myStudent.Classes);
});
问题:
- then-handler 中的
result
参数是什么意思?
- 为什么
myStudent.Classes
没有更新我所做的 setClasses()
更改?
- 如何让 Sequelize 更新简单的
Classes
成员?我需要 return 一个简单的 JSON 回复来电者。
根据 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
})
})
它没有更新,因为关于对象关联的查询不依赖于您的原始对象 (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);
})
})
我希望我用前两个答案回答了这个问题,如果没有,你能解释一下你更新Classes
成员的意思吗?
我有 Students
和 Classes
,它们之间有 hasMany 关联。
我这样做:
myStudent.setClasses(ids). then(function(result) {
console.log(myStudent.Classes);
});
问题:
- then-handler 中的
result
参数是什么意思? - 为什么
myStudent.Classes
没有更新我所做的setClasses()
更改? - 如何让 Sequelize 更新简单的
Classes
成员?我需要 return 一个简单的 JSON 回复来电者。
根据 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 }) })
它没有更新,因为关于对象关联的查询不依赖于您的原始对象 (
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); }) })
我希望我用前两个答案回答了这个问题,如果没有,你能解释一下你更新
Classes
成员的意思吗?