我想爲我的應用程序編寫一個模擬複製期間衝突的單元測試。有沒有辦法僅使用單個CouchDB數據庫和服務器來模擬衝突?如何在不使用複製的情況下模擬CouchDB中的衝突?
1
A
回答
5
我假設你想要在你的數據庫中獲得一個包含衝突的文檔,而不是409衝突響應?
$ curl http://localhost:5984/scratch/foo -X PUT -H "Content-Type: application/json" -d '{}'
{"ok":true,"id":"foo","rev":"1-967a00dff5e02add41819138abb3284d"}
然後使用與all_or_nothing批量文檔API:true選項更新與故意損壞或沒有_rev相同的文檔,添加
因此,與已知的_id數據庫中創建的文檔
$ 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}'
0
1
一派問這個問題,它看起來像答案是使用大容量文件API的all-or-nothing
模式後進一步。
http://wiki.apache.org/couchdb/HTTP_Bulk_Document_API
查找附近的頁的末尾。
相關問題
- 1. 如何在不與Wordpress衝突的情況下使用mod_rewrite
- 2. 如何在不衝突的情況下在Chrome擴展內容中使用jQuery
- 3. 如何在不使用指針的情況下模擬指針?
- 4. 如何在不使用java.awt.robot的情況下模擬mousePressed事件?
- 5. 在不創建全局衝突的情況下使用$ Alias
- 6. 如何在不衝突的情況下運行AJAX請求?
- 7. 如何在不調用onChange事件的情況下模擬更改複選框
- 8. 解決複製衝突已刪除的文件在CouchDB中
- 9. 模擬GIT中的衝突
- 10. 在不使用Jquery的情況下使用Javascript複製對象
- 11. 使用Jamine在不模擬的情況下測試AngularJS服務
- 12. 在不合並的情況下修復瑣碎/無法解析的git衝突
- 13. 如何在不模擬的情況下存儲Python方法
- 14. 如何在不使用鼠標的情況下複製Lynx中的URL
- 15. 如何在不復制內存的情況下複製ZeroMQ中的消息?
- 16. 如何在這種情況下使用模擬?
- 17. 如何在這種情況下使用模擬?
- 18. 在CouchDB中處理衝突
- 19. 如何在啓用TTS的情況下運行android模擬器
- 20. 如何在不使用Ant-contrib的情況下模擬if-elseif-else?
- 21. 如何在以下情況下模擬方法調用?
- 22. 在CouchDB中完全解決複製衝突
- 23. 在不復制業務邏輯的情況下使用Firebase
- 24. 如何在不使用phpMyAdmin的情況下修復MySQL表?
- 25. 如何在不使用JavaScript的情況下重複圖片?
- 26. 如何在不使用鼠標的情況下從我的xterm複製文本?
- 27. 如何在不更換的情況下複製/移動文件
- 28. 如何在不復制客戶的情況下編寫此SQL?
- 29. 如何在不復制QGraphicsScene的情況下顯示QImage
- 30. 如何在不安裝的情況下使用blist模塊?
+1。我冒昧地添加了我最近學到的另一種技術。 – JasonSmith