使用mongodb更新多个文档
update multiple documents with 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
});
})
请改用Promise.all()
和.findByIdAndUpdate()
。只要您的环境支持ES6构造,或者您导入了提供Promise.all()
:的东西
Promise.all(
req.body.data.map(function(doc) {
var id = doc._id;
delete doc._id;
return Item.findByIdAndUpdate(id,doc,{ "new": true });
})
).then(function(documents) {
res.json({ "items": documents })
});
不需要外部库。
由于update
是异步的,因此documents
为空并立即返回。为每个更新创建承诺。同时创建一个外部promise数组。将这些承诺推送到该数组,并在所有操作完成后发送响应。我正在使用Q库
.put(function (req, res) {
var data = req.body.data;
var documents = [];
var promises = []
for (var item in data) {
var id = data[item]._id;
var document = data[item];
var itemDefer = Q.defer();
Item.update({ _id: id }, document, { overwrite: true }, function (err, item) {
if (err) {
res.send({'error':'Error'});
}
Item.findById(id, function (err, document) {
if (err) {
itemDefer.reject(err);
}
itemDefer.resolve(document);
});
});
promises.push(itemDefer.promise);
}
Q.all(promises).then(function(documents) {
res.json({items: documents});
}, then(function(err) {
res.send({})
}))
})
相关文章:
- 流星收集更新不是在更新文档
- 使用猫鼬更新子文档
- MongoDB findAndModify:>>>查找和更新文档数组中的对象
- Javascript 不会在浏览器中更新文档
- 更新数组中的嵌入文档 - Mongodb + Node Driver
- 如何在猫鼬中更新文档后添加一些操作
- Mongodb 嵌套文档更新
- 检查文档是否已经存在,如果是则更新,否则创建新的Mongoose
- 如何在更新mongo文档时使用变量
- 在更新选择器中使用$in时颠倒多个文档
- 编辑以前保存的文档也会更新数据库中的文档
- 使用mongodb更新多个文档
- Mongoose创建一个文档,如果找不到指定的字段,则更新文档中的数组
- Meteor Update集合-未捕获错误:不允许.不受信任的代码只能通过ID更新文档.[403]
- Mongo-shell游标:更新后的文档再次到达游标
- 在MongoDB中获取“更新前”文档
- 数组中嵌入文档的集合更新属性
- 如何将一些参数从javascript接收响应字符串 asp.net 页面并更新html文档
- 如何从 MongoDB 文档更新与特定值匹配的数组
- 猫鼬嵌入文档更新