我需要使用猫鼬来执行很多findOneAndUpdate()
操作,因为没有办法批量执行原子操作。因此,我在for循环中创建了一个允诺数组,该数组将在之后被解析。不幸的是,这需要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应用程序对新请求完全没有响应?
更多上下文信息:
我试图用原子操作更新和返回许多文档,因此产生了大的for循环。它基本上是选择一个文档并为这个文档设置一个锁。
发布于 2017-09-25 17:28:17
尝试使用update和多选项:
PlayerProfile.update(filter, updateDoc, { multi: true }, function(err, result) {
// Do something
})
签名是:
Model.update(conditions, update, options, callback)
https://stackoverflow.com/questions/46410797
复制相似问题