2012-07-26 15 views
6

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

"put"アクションには現在のドキュメントのリビジョンが必要ですが、ナノではパラメータとしてリビジョンを取得してドキュメントをデータベースに戻す機能が見つかりません。

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

答えて

7

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

現在のリビジョンを保存し、変更を適用し、保存されたリビジョン番号のドキュメントを送信しようとします。

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

この場合、ドキュメントを再フェッチし、リビジョン番号を保存し、変更を再度適用して、新しいリビジョンで再度送信してください。の場合はステップ1に

  • に保存された_revと行くを更新した文書を送信しよう

    1. _rev
    2. が適用文書
    3. 保存します
    4. を変更しますので、ここで

      はアルゴリズムがありますa 409

    チェックアウトその問題の詳細については、とCouchDBのReplication and Conflicts wikiページを参照してください。また、How To Update A Document With Nano (The CouchDB Client for Node.js)が役に立ちます。

  • +0

    私はリビジョンが必要であることを知っています。問題は、ナノにおける「リビジョン」議論を伴う機能である。正解ですが別の質問です。 – DSblizzard

    +1

    あなたの質問に対しても正しい答えです。 [nanoのドキュメントAPI](https://github.com/dscape/nano#document-functions)のドキュメントを読んでください。挿入するドキュメントに適切なリビジョンを設定しなければならないことを意味する 'inser()'メソッドだけがあります。 –

    +0

    コードを表示できますか? – DSblizzard

    関連する問題