如何在 sails.js 中更新(覆盖)集合关联的值?
How to update (override) a collection association's value in sails.js?
我有一个模型,其属性是一个集合关联:
以下面的用户模型为例。
module.exports = {
attributes: {
pets: {
collection: 'pet'
}
}
}
我知道我可以使用
将宠物添加到用户实例
user.pets.add(3);
但是我怎样才能用一组新的宠物替换任何现有的宠物呢??
您将删除所有现有宠物并创建新宠物。 sails.js 没有一个特殊的 API 函数来做你想做的事情,但无论哪种方式都非常简单:
var newPets = [
{ name: 'fluffy', user: 1 },
...
];
Pet.destroy({ user: 1 })
.then(function () {
return _.map(newPets, Pet.create);
})
.then(function (pets) {
// pets are "replaced"
});
或者类似的东西。
好的,我一直在研究 API 并找到了答案。以下调用应更新(设置)单个用户的宠物关联。如果存在现有宠物,此方法将覆盖它们。
User.update({id:1}, {pets: [{id: 7}, {id: 8}]}).exec(cb);
我有一个模型,其属性是一个集合关联: 以下面的用户模型为例。
module.exports = {
attributes: {
pets: {
collection: 'pet'
}
}
}
我知道我可以使用
将宠物添加到用户实例user.pets.add(3);
但是我怎样才能用一组新的宠物替换任何现有的宠物呢??
您将删除所有现有宠物并创建新宠物。 sails.js 没有一个特殊的 API 函数来做你想做的事情,但无论哪种方式都非常简单:
var newPets = [
{ name: 'fluffy', user: 1 },
...
];
Pet.destroy({ user: 1 })
.then(function () {
return _.map(newPets, Pet.create);
})
.then(function (pets) {
// pets are "replaced"
});
或者类似的东西。
好的,我一直在研究 API 并找到了答案。以下调用应更新(设置)单个用户的宠物关联。如果存在现有宠物,此方法将覆盖它们。
User.update({id:1}, {pets: [{id: 7}, {id: 8}]}).exec(cb);