2017-07-07 11 views
2

私はCloudlightのユーザー入力に基づいてドキュメントに新しいフィールドを追加しようとしていますが、挿入を行うとドキュメントを上書きして既存のフィールドを失います私がinsertでそれらを送っていない限り。Cloudant内のドキュメントに新しいフィールドを追加する方法

たとえば、Cloudantにドキュメントを受信するクエリを実行し、_id, _rev, name and special_idフィールドを返すコマンドが1つあります。このドキュメントは、favorite_foodなどのフィールドを挿入する新しいコマンドに渡されます(そして、私は_revを使用しています)。

ここで、ユーザーは「学校を追加」のような別のコマンドを入力します。プロセスが始まり、私はCloudantに問い合わせ、私が返す質問は_id, _rev, name, and special_idです。 schoolフィールドを文書に追加してinsertを実行しますが、文書をチェックしてfavorite_foodがなくなりました。

Cloudant insert関数に渡して実際に更新を実行し、上書きしないようにするためのパラメータがありますか?

FYIこれはノード上で実行され、node-cloudantパッケージを使用しています。ドキュメントでは、私はのparamsについての詳細を見つけることができない、典型的な挿入は次のようになります。

cloudantDb.insert(doc, params, function(error, response) { 
    if (!error) { 
    console.log("success", response); 
    resolve(response); 
    } else { 
    console.log("error", error); 
    reject(error); 
    } 
}); 

答えて

1

あなたのコードを見ることなく、それは確かに言うのは難しいです。魔法のパラメータはありません。 Cloudantでは、作成、更新、削除に違いはありません。基本的にはすべてリビジョンを作成しています。あなたはJSONのドキュメントを "パッチ"することはできません、あなたはすべてのことを、毎回提供する必要があります。ここに例があります:

# Create a new document 
curl -XPOST -H 'content-type:application/json' \ 
    'https://skruger.cloudant.com/testdb' -d '{"name":"stefan"}' 
{"ok":true,"id":"5309a1784a9cc45d498e8170af7dcc3c","rev":"1-a0f0b27e1069f45cc121dfe5dc08f280"} 

# Add a field 
curl -XPUT -H 'content-type:application/json' \ 
'https://skruger.cloudant.com/testdb/5309a1784a9cc45d498e8170af7dcc3c' \ 
    -d '{"_id":"5309a1784a9cc45d498e8170af7dcc3c", "_rev":"1-a0f0b27e1069f45cc121dfe5dc08f280", "name":"stefan", "fish":"pike pearch"}' 
{"ok":true,"id":"5309a1784a9cc45d498e8170af7dcc3c","rev":"2-7c3ea3603c3e16962c7b33f50becc771"} 

# Fetch it again 
curl 'https://skruger.cloudant.com/testdb/5309a1784a9cc45d498e8170af7dcc3c' 
{"_id":"5309a1784a9cc45d498e8170af7dcc3c","_rev":"2-7c3ea3603c3e16962c7b33f50becc771","name":"stefan","fish":"pike pearch"} 

# And another new field 
curl -XPUT -H 'content-type:application/json' \ 
'https://skruger.cloudant.com/testdb/5309a1784a9cc45d498e8170af7dcc3c' \ 
-d '{"_id":"5309a1784a9cc45d498e8170af7dcc3c", "_rev":"2-7c3ea3603c3e16962c7b33f50becc771", "name":"stefan", "fish":"pike pearch", "sport":"tennis"}' 
{"ok":true,"id":"5309a1784a9cc45d498e8170af7dcc3c","rev":"3-e0f4d1ab1a47b046ea90a0fbbf34ff36"} 

# Fetch again  
curl 'https://skruger.cloudant.com/testdb/5309a1784a9cc45d498e8170af7dcc3c' 
{"_id":"5309a1784a9cc45d498e8170af7dcc3c","_rev":"3-e0f4d1ab1a47b046ea90a0fbbf34ff36","name":"stefan","fish":"pike pearch","sport":"tennis"} 
関連する問題