Cloudantデータベースでは、リビジョンが定義されていないドキュメント上でPUTを呼び出すと予想される動作は何ですか?存在していないアイテムにrevを使用したクラウドPUTの予想される動作は何ですか?
ドキュメントは言う:
更新(または作成)するには、ドキュメント、httpsに(新しい 文書を作成するために必要ではない)が更新 JSONコンテンツと最新の_rev値とPUT要求を行います。 //$USERNAME.cloudant.com/$DATABASE/$DOCUMENT_ID。
私は私がやった場合、DBは、それが一致しなかったことを検出し、要求を拒否するだろうと、リビジョンを提供することを想定していました。私のテストケースでは、私は矛盾した動作をしています。ほとんどの場合、私は予想される409、ドキュメントの更新の競合を取得します。ただし、文書が作成されてしまい(201)、次のリビジョンが割り当てられることがあります。
私のテストでは、ドキュメントを作成し、そのリビジョンを使用して別のドキュメントを更新します。
- POSTのHTTPS:// {URL}/{DB} {_id: "T1"} - 戻さリビジョン
- PUTのHTTPS保存:// {URL}/{DB}/T2を{_rev。 }
リビジョンが1-79c389ffdbcfe6c33ced242a13f2b6f2のようなものだった返さあれば、その後、PUTが成功した場合には、それが(2-76054ab954c0ef41e9b82f732116154bのように)次のリビジョンを返します。私は1つのステップにテストを簡素化した場合
EDIT
、私はまた、異なる結果を得ることができます。
- PUTのHTTPS:// {URL}/{DB}/{_revのDoesNotExist: "1-ffffffffffffffffffffffffffffffff"}
OK、私はあなたの答えを正しく解釈していることと、この動作が期待されていることを確かめるために、 "1-ffffffffffffffffffffffffffffff"(POSTをスキップする)などのリビジョンを使用して、私の元の質問を呼び出すだけで、テストを畳み込んでいた)、ドキュメントは、いくつかの時間に作成され、他の時間は "ドキュメントの更新の競合"を与えるでしょう。 APIユーザーから期待されるものと、呼び出しコードがどちらのケースにも対処できるはずのことについては、期待できません。 – Lin