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

如何更新(覆盖)集合关联';s在sails.js中的价值?,sails.js,waterline,Sails.js,Waterline,我有一个具有集合关联属性的模型: 以下面的用户模型为例 module.exports = { attributes: { pets: { collection: 'pet' } } } 我知道我可以通过以下方式将宠物添加到用户实例中: user.pets.add(3); 但是我怎样才能用一组新的宠物替换任何现有的宠物呢???你将移除所有现有的宠物,并创建新的宠物。sails.js没有一个特殊的API函数来完成您想要做的事情,但无论哪种方式,它都非常简单:

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

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"
  });

或者类似的东西。

你会移除所有现有的宠物并创建新的。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,找到了答案。以下呼叫应为单个用户更新(设置)pets关联。如果存在现有宠物,这种方法将覆盖它们

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

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

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

感谢您确认没有用于此的API。我非常希望像user.pets.set([1,4,5])这样的东西将这3个且仅3个pet记录ID与用户实例关联。user.pets.add([4,5,6])也一样,可以一次添加多个宠物。感谢您确认没有用于此操作的API。我确实希望类似user.pets.set([1,4,5])的内容将这3个且仅3个宠物记录ID与用户实例相关联。user.pets.add([4,5,6])也一样,可以一次添加多个宠物。