6

ドキュメントを取得し、いくつかのフィールドを変更/挿入/削除して、元に戻す必要があります。

put」アクションにはドキュメントの現在のリビジョンが必要ですが、nanoでは、リビジョンをパラメーターとして受け取り、ドキュメントをデータベースに挿入する関数が見つかりません。

nanoでこれを行うにはどうすればよいですか?

4

1 に答える 1

8

注:これは一般的なアルゴリズムであり、 nanoのinsert()メソッドはドキュメントを更新するための自動化されたものを提供しないため、どのライブラリにも固有ではありません。

ドキュメントを取得し、現在のリビジョンを保存し、変更を適用して、保存したリビジョン番号でドキュメントを送信してみてください。

その間にドキュメントが変更されたときに発生する可能性のある409の競合応答を処理するようにしてください。

その場合は、ドキュメントを再フェッチし、リビジョン番号を保存し、変更を再適用してから、新しいリビジョンで再度送信する必要があります。

だからここにアルゴリズムがあります:

  1. ドキュメントを取得
  2. _revを保存します
  3. 変更を適用する
  4. 保存された_revを使用して更新されたドキュメントを送信してみてください
  5. 409の場合は、手順1に進みます。

この問題の詳細については、CouchDB HTTPDocumentAPIのPUTセクションとCouchDBのReplicationandConflictswikiページを確認しくださいNano(Node.js用のCouchDBクライアント)を使用してドキュメントを更新する方法も役立つ場合があります。

于 2012-07-26T07:15:02.240 に答える