node.js - 如何检查对 mongoose 文档对象的数据库更改?
问题描述
想象如下处理订单:
Order.find({_id: '5faae1245e387720f4a4ef3a'})
.then(async order => {
const products = order.products; //array of products
for(let index = 0; index < products.length; index++){
const if_success = await processProduct(products[index]);
//Do something based on if_success
/* ... */
}
})
.catch()
订单上可能有大量产品,并且for
循环必须按顺序处理它们,这可能需要一段时间。诀窍是,当循环在不知道周围环境的情况下幸福地运行时,用户可以通过他们的门户网站for
更改订单,在这种情况下,我想打破循环。5faae1245e387720f4a4ef3a
我当然可以通过在循环的每次迭代中运行一个查询来检查订单是否有待处理的更改来实现这一点,但我不愿意这样做,因为我不想用这些查询来敲击数据库,因为可能有一个数字这些循环为不同的订单并行运行。
另一个并没有太大不同的解决方案是在循环的每 x 次迭代中查询数据库以获取待处理的更改;if(index % x === 0)
各种各样的东西。
后者是我目前倾向于的,但也许我错过了一些东西。
我觉得猫鼬可以在这里帮助我,所以从概念上讲,我正在努力做到这一点:
Order.find({_id: '5faae1245e387720f4a4ef3a'})
.then(async order => {
const products = order.products; //array of products
for(let index = 0; index < products.length; index++){
const if_success = await processProduct(products[index]);
//Do something based on if_success
/* ... */
if(order.metadata.ifDocChanged)
break;
}
})
.catch()
有没有办法用猫鼬做类似的事情?
解决方案
推荐阅读
- python-3.x - 在 Python 脚本中执行 Bash 命令
- php - 在不同页面上显示复选框输出
- python - 在子字符串上加入熊猫数据框
- javascript - 在对象内的数组内追加 - Watson Assistant
- reactjs - 在 React SPA 中将两个子域组合在一起
- javascript - JS 要求用户启用 cookie
- sql-server - 如果不存在则插入触发器
- javascript - 此关键字未指向当前对象
- xamarin.android - ffimageloading.cross.MvxCachedImageView 从 Android 上的资源加载 svg
- android-ndk - 如何解决 NDK 的错误 - 我无法构建我的应用程序