gpt4 book ai didi

couchdb - 如何在不使用复制的情况下模拟 CouchDB 中的冲突?

转载 作者:行者123 更新时间:2023-12-02 07:45:06 24 4
gpt4 key购买 nike

我想为我的应用程序编写一个单元测试来模拟复制期间的冲突。有没有一种方法可以仅使用单个 CouchDB 数据库和服务器来模拟冲突?

最佳答案

我假设您想要在数据库中获取包含冲突的文档,而不是 409 冲突响应?

因此,在数据库中创建一个具有已知 _id 的文档:

$ curl http://localhost:5984/scratch/foo -X PUT -H "Content-Type: application/json" -d '{}'
{"ok":true,"id":"foo","rev":"1-967a00dff5e02add41819138abb3284d"}

然后将批量文档 API 与 all_or_nothing: true 选项一起使用,以故意使用错误或无 _rev 更新同一文档,添加一些不同的文档属性以达到良好的效果:

$ curl http://localhost:5984/scratch/_bulk_docs -X POST -H "Content-Type: application/json" -d '{"all_or_nothing": true, "docs": [{"_id": "foo", "abc": 123}]}'
[{"id":"foo","rev":"1-15c813a2b4b312c6915821b01a1986c5"}]

然后你应该在文档中有一个冲突:

$ curl http://localhost:5984/scratch/foo?conflicts=true
{"_id":"foo","_rev":"1-967a00dff5e02add41819138abb3284d","_conflicts":["1-15c813a2b4b312c6915821b01a1986c5"]}

您还可以使用 ?new_edits=false 作为 described by CouchDB committer Randall Leeds 执行普通查询.

$ curl http://localhost:5984/scratch?new_edits=false -X POST -H "Content-Type: application/json" -d '{"_id": "foo", "abc": 123}'

关于couchdb - 如何在不使用复制的情况下模拟 CouchDB 中的冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7602615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com