У меня возникли проблемы, обертывающие мою голову вокруг обновления нескольких значений в моем mongoDB с использованием mongooseJS и ExpressJS.экспресс-запрос/mongoose update
Предположим, что я передаю массив из 2 или более объектов из моего интерфейса, чтобы «выразить маршрутизацию», и там я получаю параметры req.body для его получения. Мой req.body выглядит следующим образом:
[articles:
{ article: {
_id: '564209c66c23d5d20c37bd84',
quantity: 25,
},
{ article: {
_id: '564209c66c23d5d20c37bd83',
quantity: 51,
},
}]
Мне тогда нужно петлю? чтобы найти конкретную статью в db для обновления, и когда эта статья будет найдена, я хочу обновить значение «количество» от внешнего интерфейса до правильной статьи в db.
var id = [];
var body = {};
for (var i = req.body.length - 1; i >= 0; i--) {
id.push(req.body[i].article._id);
body[i] = req.body[i].article.quantity;
};
Articles.update(
{ _id: {$in: id} },
{ $set: {quantity: body[0].article.quantity} },
{multi: true},
function(err, response){
if(err)
console.log(err);
console.log(response);
});
Проблема с этим кодом является то, что я ставлю в первом значении величины для всех статей, и я хочу, чтобы это было правильной во внешнем интерфейсе. Мне кажется, что я на правильном пути, но я довольно новичок в mongoDB и выражаю это, если есть лучшее решение или даже решение, дайте мне знать.
Спасибо это то, что я искал! Но с меньшими проблемами с этим я получаю эту ошибку от узла: throw new Error ('can not set header после их отправки'); Im, используя функцию res.json(), чтобы отправить ответ, и я понимаю, что это проблема правильно? Есть ли способ собрать все ответы и отправить или как мне это сделать? – grahlie
Да. Это потому, что вы дважды вызываете res.json(). – inspired
Вы можете использовать ['async'] (https://github.com/caolan/async#asyncjs), чтобы узнать, когда все обновления будут выполнены, а затем отправить ответ res.json(). – inspired