Node.js 如何防止Mongodb/NodeJS中的竞争条件
我甚至不确定这是否有一个特定的名称,但下面是一个场景:Node.js 如何防止Mongodb/NodeJS中的竞争条件,node.js,mongodb,Node.js,Mongodb,我甚至不确定这是否有一个特定的名称,但下面是一个场景: 用户1和用户2都访问数据库中的一条记录(因此它们实际上具有相同的记录) 用户1更新记录 用户2尝试更新记录,但由于数据已更改,因此应失败 当我使用C#和SQL server编程时,如果一个表中有时间戳,实体框架(database Framework for.Net)会自动处理这个问题,并使修改数据的更新失败 MongoDB/NodeJS中有类似的东西吗 谢谢 Martinmongodb中没有内置的时间戳功能,但mongoose在这种情况
- 用户1和用户2都访问数据库中的一条记录(因此它们实际上具有相同的记录)
- 用户1更新记录
- 用户2尝试更新记录,但由于数据已更改,因此应失败
Martinmongodb中没有内置的时间戳功能,但mongoose在这种情况下可能会有所帮助:
在MongoDB中,并发事务模型不明显,但可以访问-
我个人建议远离猫鼬 您可以创建一个
locked
属性:
findOneAndUpdate({locked:null,…restOfConditions})开始
并将locked
设置为truefindOne
,因为部分条件是始终查询{locked:null}
锁定