2016-05-20 2 views
0

Я использую Waterline в моем приложении Sails.js для запроса моей базы данных mongo. Я в состоянии получить запись на основании нескольких PARAMATERS запросов, например, это:Sails.js Метод обновления Waterline

Model.findOne({param1: params[0], param2: params[1]})... 

Это прекрасно работает. Я посмотрел на the docs for .update() и скопировал это, но он не работает. Я по-прежнему необходимо обновить запись на основании двух параметров, так что это моя функция обновления:

Model.update(
    [{param1: params[0]}, {param2: params[1]}], 
    [{field1: update[0]}, {field2: update[1]}] 
).exec(function(err, updatedModel) { 
    console.log(err); 
    console.log(updatedModel); 
}); 

Из того, что я читал, это выглядит как первый аргумент метода обновления является объект или массив объектов с значения, которые вы запрашиваете, для обновления записи; то вторым параметром являются обновленные поля.

У меня пока нет ошибки или обновленной модели, что, вероятно, означает, что я не нахожу объект из таблицы Model в mongo, который соответствует требованиям. Но я знаю, что объект есть, и параметры верны. Какие-либо предложения?

Кроме того, here's a gist с функцией обновления также.

ответ

1

Params in update Функция - это объекты, а не массивы.

Model.update(
    {param1: params[0], param2: params[1]}, //this is find 
    {field1: update[0], field2: update[1]} // this is update 
).exec(function(err, updatedModel) { 
    if(err) 
     console.error(err); 
    console.log(updatedModel); 
}); 
+0

Я попробую, но документы говорят, что принятые типы данных критериев найти в '{}, [{}], строка, int' и обновленные записи принятых типов' {}, [{ }] '. – pjlamb12

+0

Итак, несмотря на то, что документы делают это, вы можете передать массив объектов в параметре find и параметре обновления, на самом деле не можете. Или, по крайней мере, это не сработало. Однако ответ здесь сработал. – pjlamb12

+0

Парусная документация имеет много ошибок. Сейчас он создан сообществом. – Bonanza

Смежные вопросы