CouchDb 和数据写入

发布于 2024-11-07 14:32:34 字数 182 浏览 2 评论 0原文

据我了解,CouchDb 永远不会覆盖记录,而是使用新的 _rev 创建一个新文档。在这种情况下会发生什么?

  1. 用户 A 读取文档
  2. 用户 B 读取同一个文档
  3. 用户 A 更新文档
  4. 用户 B 更新文档

在这种情况下,用户 A 的更改不会丢失吗?

As I understand it CouchDb never overwrites a record but instead creates a new document with a new _rev. What happens in this scenario?

  1. User A reads a document
  2. User B reads the same document
  3. User A updates the document
  4. User B updates the document

Aren't User A's changes lost in this scenario?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情归归情 2024-11-14 14:32:34

不,用户 B 将收到 409 错误,因为转速不再匹配。为了让用户 B 提交其文档,他们需要重新获取文档,以便获得最新的文档修订版本。

这称为乐观锁定,旨在专门防止您遇到的问题。

没有什么可以阻止用户 B 践踏用户 A 的文档,但现在他们通过必须重新获取文档并使用新的 _rev 参数更加意识到这一点。

No, instead User B will get a 409 error since the revs will no longer match. For User B to commit their document, they will need refetch the document so they can get the latest document revision.

This is called Optimistic Locking, and is designed to specifically prevent the problem that you are seeing.

There's nothing stopping User B from stomping on User A's document, but now they are more conscious of it by having to refetch the document and use the new _rev parameter.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文