我们如何将CouchDB的_bulk_docs与all_or_nothing选项一起使用?

cer*_*cem 5 couchdb transactions pouchdb

CouchDB文档中,他们说我们可以批量插入文档,如果需要,可以选择all_or_nothing或者new_edits选项.但似乎,all_or_nothing当我们这样使用时,键没有任何效果:

HOST="http://test:test@localhost:5984/mydb"

curl -vX POST "$HOST/_bulk_docs" \
    -H "Content-type: application/json" \
    -d @test.json
Run Code Online (Sandbox Code Playgroud)

用test.json:

{
    "all_or_nothing":true,
    "docs":[
        {"_id":"hello"},
        {"_id":"world"}
    ]
}
Run Code Online (Sandbox Code Playgroud)

这将插入具有helloworldid的文档.重新运行通过更换脚本hellohello1应引起hello1在数据库中插入,但失败了world文档的记录(因为它没有正确的_rev),因此,他们一方面是因为我们说应该失败all_or_nothing.但最终,有3个文件在数据库中:hello,hello1world.

我们如何使用all_or_nothingCouchDB?

cer*_*cem 6

我的用法是正确的.但是,我尝试失败的原因不止一个:

  1. PouchDB服务器只是忽略(即使没有正确的错误),all_or_nothing因为他们认为这是正确的方法.

  2. Cloudant简单地删除了这个功能,因为它们保持数据库服务的分布,并且事务不会让数据库扩展.

  3. CouchDB 在2.0版本中放弃了all_or_nothing支持.