繁体   English   中英

NodeJS和MongoDB堆栈的并发控制

[英]Concurrent control for NodeJS and MongoDB stack

我有用户提交的这些“任务”,这些命中了我的NodeJS服务器,并作为文档存储在MongoDB数据库中。 然后,用户还可以提取这些任务并一次完成一项任务。

  • 任务具有状态:待处理,正在工作,已完成
  • 最初,提交任务时,它们处于“待处理”状态。
  • 当用户想要处理任务时,他们以FIFO方式查询一个“待处理”任务。
  • 向用户提供任务后,该任务将更新为状态为“工作中”

我的问题是,当两个用户同时要求执行一项任务时,由于竞争状况,他们可能会获得相同的任务。 当第一个查询尝试将任务的状态更新为“正在工作”时,第二个查询也可以获取该状态。 有人可以建议我如何使用NodeJS和MongoDB解决所有异步的问题吗? 也欢迎任何框架或库。

MongoDB正是有一个为此目的的findAndModify方法。

使用MongoDB驱动程序,您将运行以下代码,

collection.findAndModify({
  // Query
}, [
  // Sort
], {
  $set: {
    state: 'working'
  }
}, {
  new: true
}).then((task) => {
  // This is your "working" task
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM