如何在sails.js中更新(覆盖)集合关联的值?

时间:2015-03-03 02:07:48

标签: sails.js waterline

我有一个具有集合关联属性的模型: 以下面的用户模型为例。

module.exports = {

  attributes: {
    pets: {
      collection: 'pet'
    }
  }
}

我知道我可以使用

将宠物添加到用户实例
user.pets.add(3);

但我怎么能用一组新的宠物替换现有的宠物?

2 个答案:

答案 0 :(得分:4)

好的我一直在玩API并找到了答案。以下调用应更新(设置)单个用户的宠物关联。如果有现有的宠物,这种方法会覆盖它们。

User.update({id:1}, {pets: [{id: 7}, {id: 8}]}).exec(cb);

答案 1 :(得分:1)

您将删除所有现有宠物并创建新宠物。 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"
  });

或类似的东西。