ドキュメントを取得し、いくつかのフィールドを変更/挿入/削除して、元に戻す必要があります。
「put」アクションにはドキュメントの現在のリビジョンが必要ですが、nanoでは、リビジョンをパラメーターとして受け取り、ドキュメントをデータベースに挿入する関数が見つかりません。
nanoでこれを行うにはどうすればよいですか?
ドキュメントを取得し、いくつかのフィールドを変更/挿入/削除して、元に戻す必要があります。
「put」アクションにはドキュメントの現在のリビジョンが必要ですが、nanoでは、リビジョンをパラメーターとして受け取り、ドキュメントをデータベースに挿入する関数が見つかりません。
nanoでこれを行うにはどうすればよいですか?
注:これは一般的なアルゴリズムであり、 nanoのinsert()
メソッドはドキュメントを更新するための自動化されたものを提供しないため、どのライブラリにも固有ではありません。
ドキュメントを取得し、現在のリビジョンを保存し、変更を適用して、保存したリビジョン番号でドキュメントを送信してみてください。
その間にドキュメントが変更されたときに発生する可能性のある409の競合応答を処理するようにしてください。
その場合は、ドキュメントを再フェッチし、リビジョン番号を保存し、変更を再適用してから、新しいリビジョンで再度送信する必要があります。
だからここにアルゴリズムがあります:
この問題の詳細については、CouchDB HTTPDocumentAPIのPUTセクションとCouchDBのReplicationandConflictswikiページを確認してください。Nano(Node.js用のCouchDBクライアント)を使用してドキュメントを更新する方法も役立つ場合があります。