首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止Mongodb / NodeJS中的竞争条件

如何防止Mongodb / NodeJS中的竞争条件
EN

Stack Overflow用户
提问于 2019-10-15 05:08:42
回答 3查看 1.1K关注 0票数 0

我甚至不确定它是否有特定的名称,但下面是一个场景:

  • 用户1和用户2都访问数据库中的记录(因此它们实际上拥有相同的记录)
  • 用户1更新记录
  • 用户2尝试更新记录,但是由于数据已经更改,应该会失败。

当我使用C#和server编程时,如果表中有时间戳,实体框架( .Net的数据库框架)将自动处理这个问题,并使修改后的数据的更新失败。

MongoDB / NodeJS里有这样的东西吗?

谢谢马丁

EN

回答 3

Stack Overflow用户

发布于 2019-10-15 05:21:47

mongodb中没有内置的时间戳功能,但猫鼬在这种情况下可能会有所帮助:

https://mongoosejs.com/docs/guide.html#timestamps

票数 0
EN

Stack Overflow用户

发布于 2019-10-15 05:22:30

在MongoDB中,并发事务模型并不明显,但是可以访问- https://docs.mongodb.com/manual/core/transactions/

票数 0
EN

Stack Overflow用户

发布于 2019-10-15 07:54:16

我个人建议离猫鼬远点。

您可以做的是创建一个locked属性:

用户1尝试更新一个记录,它从{locked: null}.

  • User开始,并将locked设置为true。

  • 用户2尝试更新记录,它失败了,因为条件的一部分是总是查询一个记录,它完成了一个记录的更新,作为最后一个更新的一部分,它解除了locked.

这显然需要由您来实现,但我希望它能给您提供我所选择的方法的想法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58387593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档