帆水线中的多个模型更新

时间:2014-04-26 14:05:26

标签: node.js sails.js waterline

我在帆上建立一个项目(0.10.0-rc5)几天,在少数情况下我需要使用相同的数据一次更新多个条目,所以我做了一些...... < / p>

Servers.find({owner_id: anonymous_user.id}).exec(function(error, servers) {

  catches.error(error);
  queries.save_each(servers, {owner_id: user.id});

});

有趣的部分是我创建的queries.save_each()......

/**
 * Save each ActiveRecord objects with the desired attributes
 * @param  {object} objects ActiveRecord object (e.g. servers, users)
 * @param  {object} updates datas to update
 * @return {void}
 */
save_each  = function(objects, updates) {

// For each object we will update the wanted datas
for (var n in objects) {

    objects[n] = variables.inject(objects[n], updates);
    objects[n].save(function(error) { 

        catches.error(error);

     });

}

}

基本上,它会检查每个条目并使用save()从新数据中更新它。它工作正常,但我想知道在水线上是否已经没有做过这样做;我没有找到任何东西,但我在航行中相当初学者也许我错过了一些东西!

有什么想法吗?

2 个答案:

答案 0 :(得分:7)

要记录,要更新Sails中的记录,请使用update方法:

Model.update(criteria, data).exec(callback);

例如:

Servers.update({owner_id: anonymous_user.id}, {owner_id: user.id})
       .exec(function(err, updatedServers) {
                 // do something
             });

update的文档位于here

答案 1 :(得分:0)

这对我有用:

这里有一组照片,我们想要更新。

var photos= [1,2,5]; //update the status of these 3 photos at once!
var values = {status:"accepted"};

Photo.update(photos,values).exec(function afterwards(err, updated){

       if (err) {
                res.json(err)
                return;
       }
       res.json({err:"Everything worked"})
 });