我需要使用mongoose执行大量findOneAndUpdate()
操作,因为无法批量执行原子操作。因此,我在for循环中创建一个promise数组,之后将解析它。不幸的是,这需要大约2-3秒,在此期间我的Express应用程序无法处理任何新请求。
代码:
const promiseArray = []
for (let i = 0; i < 1500; i++) {
const p = PlayerProfile.findOneAndUpdate(filter, updateDoc)
promiseArray.push(p)
}
return Promise.all(promiseArray).then((values) => {
// Process the values
})
问题:
我如何避免我的Express应用程序在解决此承诺时对新请求完全没有响应?
更多背景信息:
我正在尝试使用原子操作更新并返回许多文档,因此是大循环。它基本上是选择一个文档并为此文档设置锁定。
答案 0 :(得分:0)
尝试将更新与多选项一起使用:
PlayerProfile.update(filter, updateDoc, { multi: true }, function(err, result) {
// Do something
})
签名是:
Model.update(conditions, update, options, callback)