Прежде всего вашего update()
запроса не работает.
См. документацию по данному вопросу here
Model.update(conditions, update, options, callback);
Предположим, что текущая модель БД содержит документы, как это (как описано в вопросе, а):
[
{
"_id": 1,
"value": 50
},
{
"_id": 2,
"value": 100
}
];
и вы имеете ниже массив, который содержит объекты (т.е., Документы) должны быть изменены с Документами текущих децибел нравится это:
idsArray: [
{
"_id": 1,
"value": 4
},
{
"_id": 2,
"value": 27
}
];
Из моего опыта работы с MongoDB & мангустом, я не думаю, что вы можете обновить все документы с однолинейным запросом (что вы пытаетесь делать) .. (PS Я не знаю об этом, так что я не уверен в этом ..)
Но, чтобы сделать ваш код работать, вы будете делать что-то вроде этого:
Идея: Цикл по каждый документ в документах, т. е. idsArray
, и вызывают обновление() над ним.
Итак, вот код этого:
idsArray.forEach(function(obj) {
Model.update({_id: obj._id}, {$set: {value: obj.value}});
});
В коде выше, я предположим, вы имеете _id
значения в БД документы, как они «повторно написано выше (то есть, "_id": 1
) .. Но если они, как это "_id": ObjectId('1')
[
{
"_id": ObjectId('1'),
"value": 50
},
.....
.....
]
тогда вам будет нужно конвертировать _id
в ObjectId(obj._id)
в обновлении() запрос .. так для этого вы будете делать, как это.
var ObjectId = require('mongodb').ObjectID;
idsArray.forEach(function(obj) {
Model.update({_id: ObjectId(obj._id)}, {$set: {value: obj.value}});
});
P.S. Просто подтвердите это (то есть, _id
), прежде чем идти вперед ..
Надеюсь, это поможет.
Cheers,
Я пробовал раньше что-то подобное, где я петлю через свои значения. Мой вопрос, если я возьму этот метод, где я устанавливаю свой res.end(); потому что, если я установлю свой res.end() после завершения foreach, у меня все еще есть куча обратных вызовов, ожидающих завершения моего Model.update. – user3862830
через callback (я думаю) - попробуйте сделать функцию func 'callback (callback) {callback();}', которая обновляет все документы в db и возвращает обратный вызов в главную функцию, где вы будете выполнять свою работу; просто попробуйте этот путь. – narainsagar
функция (скажем: 'callbackFunc'), которая будет обновлять все ваши документы, а затем возвращать обратный вызов туда, откуда она была вызвана (предположим:' mainFunc'), поэтому это означает, что все ваши документы будут обновлены (означает, что callbackFunc завершает), то вы будете делать/вызывать 'res.end()' – narainsagar