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

时间:2016-10-20 00:40:58

标签: transactions couchdb pouchdb

CouchDB documentation中,他们说我们可以批量插入文档,如果需要,可以使用all_or_nothingnew_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

使用test.json:

{
    "all_or_nothing":true,
    "docs":[
        {"_id":"hello"},
        {"_id":"world"}
    ]
}

这会插入包含helloworld ID的文档。将hello替换为hello1重新运行脚本应该导致hello1插入数据库,但world文档的录制失败(因为它没有#&# 39; t有正确的_rev),因此他们都应该失败,因为我们说all_or_nothing。但最终,数据库中有3个文档:hellohello1world

我们如何将all_or_nothing与CouchDB一起使用?

1 个答案:

答案 0 :(得分:5)

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

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

  2. Cloudant只是drops this feature,因为他们保持数据库服务的分布,而事务不会让数据库扩展。

  3. CouchDB dropped all_or_nothing support in 2.0 version