如何处理用户更新相同的MongoDB文档

时间:2018-11-29 12:23:33

标签: node.js mongodb mongoose mean

我有一个具有多个用户的Mean Stack应用程序,这些用户将同时使用该应用程序。我不担心如果他们在同一时间更新文档会发生什么,因为MongoDB会处理该问题。我的问题是这种情况

  1. 用户1加载文档
  2. 用户2加载文档
  3. 用户1更新文档
  4. 用户2在10秒后更新文档

在这种情况下,用户2永远不会看到文档的更新版本。处理此问题的最佳方法是在请求中发送文档的原始版本,以查看其是否已更改,如果有则返回错误?

1 个答案:

答案 0 :(得分:0)

我是MongoDB的新手,只是开始研究它。这个问题我也有,我想我有一个解决方案,尽管我仍然必须用一些代码进行测试。

在文档中创建一个版本控制字段。然后:

在独立服务器上,使用db.collection.findAndModify()并按_id和当前文档版本字段进行查询。将upsert设置为false。在即将更新的文档中增加版本字段。

  

修改单个文档时,findAndModify和update()   方法自动更新文档。

在副本集上使用Transactions

猫鼬5.2.0 includes this feature

  

事务是MongoDB 4.0和Mongoose 5.2.0中的新增功能。交易次数   让您隔离执行多个操作,并可能撤消   如果其中一项失败,则执行所有操作。