Несколько обновлений модели ватерлинии парусов

Я создаю проект на парусах (0.10.0-rc5) в течение нескольких дней, и в некоторых случаях мне нужно обновить несколько записей одновременно с одними и теми же данными, поэтому я кое-что придумал...

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

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

});

Интересная часть — это query.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(). Он отлично работает, но мне интересно, ничего ли еще не сделано для этого в ватерлинии; Я ничего не нашел, но я совсем новичок в парусах, возможно, я что-то упустил!

Есть идеи ?


person Laurent    schedule 26.04.2014    source источник
comment
Вы действительно смотрели документы Sails, особенно для .update()?   -  person sgress454    schedule 27.04.2014
comment
некоторые трудности с проверкой документа, и вот как вы делаете всю бесполезную систему! спасибо ;)   -  person Laurent    schedule 27.04.2014


Ответы (2)


Для записи, чтобы обновить записи в 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 находится здесь.

person sgress454    schedule 05.05.2014
comment
Похоже, что документы довольно пусты. Где ты нашел это? - person theblang; 10.09.2014
comment
Привет, Mattblang, Документы раньше были потрясающими, но они изменились с версии 0.10, в новых документах нажмите на три элемента вверху — Справочник по анатомии и концепции. - person Ryan Knell; 15.12.2014
comment
Но как сохранить существующие данные при обновлении? Я не хочу переопределять их. - person coder9; 28.07.2015
comment
Метод update будет перезаписывать только данные, предоставленные в качестве второго аргумента. Любые поля, которые вы не укажете в этом аргументе, останутся нетронутыми. - person sgress454; 29.07.2015

Это сработало для меня:

Здесь у нас есть набор фотографий, которые мы хотим обновить.

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"})
 });
person Suisse    schedule 25.07.2016