我有这些"任务"由用户提交的,这些用户访问我的NodeJS服务器并存储为MongoDB数据库中的文档。然后,这些任务也由用户提取并一次处理一个。
我的问题是,当两个用户同时要求执行任务时,由于竞争条件,他们可能会获得相同的任务。第一个查询尝试将任务的状态更新为" Working"第二个查询也可以获取该查询。有人可以建议我如何使用NodeJS和MongoDB来解决这个问题,其中一切都是异步的吗?任何框架或库也都受到欢迎。
答案 0 :(得分:0)
MongoDB完全有findAndModify
方法用于此目的。
使用MongoDB驱动程序,您将运行以下代码,
collection.findAndModify({
// Query
}, [
// Sort
], {
$set: {
state: 'working'
}
}, {
new: true
}).then((task) => {
// This is your "working" task
})