Как для перебора массив объектов, чтобы обновить документы с MongoDB и сохранить измененные документы, чтобы вернуться назад в ответобновление нескольких документов с MongoDB
Обратите внимание на комментарии в коде
.put(function (req, res) {
var data = req.body.data;
var documents = [];
for (var item in data) {
var id = data[item]._id;
var document = data[item];
Item.update({ _id: id }, document, { overwrite: true }, function (err, item) {
if (err) {
res.send({'error':'Error'});
}
Item.findById(id, function (err, document) {
if (err) {
res.send({});
}
documents.push(document); // documents are pushed
});
});
}
documents ; // value is []
res.json({
items: documents
});
})
это кажется лучшим решением, но «return Item.findByIdAnUpdate (id, doc, {" new ": true});" бросает исключение: «Ошибка типа не является функцией», вместо этого я меняю его на «return {test:« test »}» и отлично работает. –
@Jordi «typo» '.findByIdAndUpdate()', а не '.findByIdAnUpdate()', в котором отсутствует '' d ''in' "And" '. Все точки «были» и «есть», что вам обоим не нужен дополнительный импорт, а во-вторых, '.findByIdAndUpdate()' лучше, чем отдельные операции '.update()' и '.findById()'. Не только две поездки на сервер вместо одного, но и не «действительно» документ в состоянии непосредственно после внесения изменений. Другие операции могут быть изменены в двух вариантах. Но это не относится к любому из '.find ** AndUpdate()' varaints. –
Да, была ошибка «опечатки», извините и спасибо @BlakesSeven. –