2016-10-20 7 views
2

В заявке CouchDB documentation говорится, что мы можем вставлять документы навалом, с опцией all_or_nothing или new_edits, если хотим. Но, кажется, all_or_nothing ключ не имеет каких-либо эффектов, когда мы используем так:Как использовать _bulk_docs CouchDB с опцией all_or_nothing?

HOST="http://test:[email protected]: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"} 
    ] 
} 

Это вставляет документы, которые имеют hello и world идентификаторами. Повторное выполнение скрипта путем замены hello на hello1 должно привести к тому, что hello1 будет вставлен в базу данных, но не сработает запись документа world (так как у него нет правильного _rev), поэтому они оба ДОЛЖНЫ сбой, потому что мы сказали all_or_nothing. Но в итоге в базе данных есть 3 документа: hello, hello1 и world.

Как использовать all_or_nothing с CouchDB?

ответ

2

Ваше использование было верным. Тем не менее, есть более чем одна из причин, почему мои попытки неудачны:

  1. PouchDB-сервер просто игнорирует (даже без соответствующей ошибки) all_or_nothing как они do believe это правильный путь.

  2. Cloudant просто drops this feature, поскольку они сохраняют свою службу базы данных распределенной и транзакционной вещью не позволяют шкалу базы данных.

  3. CouchDB dropped all_or_nothing support in 2.0 version.