2017-03-09 8 views
1

CouchDBのドキュメント更新ハンドラ内からドキュメントをクエリ(GET)することはできますか?ドキュメント更新ハンドラ内でドキュメントを取得する

CouchDB 2.0でサードパーティ製のPOST(CognitoForms)を受け入れるための簡単なドキュメント更新ハンドラを書いています。これは正常に動作し、JSONペイロードからIDを取得し、doc _idとして使用します。

CognitoFormsで 'update' URIを指定できるので、新しいアップデートハンドラを作成したり、同じものを使用することができます。しかし、CognitoFormsに:

  • 更新POSTではなくPUT
  • は、任意のクエリを送信する方法があるように見えないん必要文書のためのIDとして

パラメータ私はこれを使用してドキュメントのデータベースを照会し、_revを取得し、_idおよび_revでペイロードを返して更新を実行することができます。しかし、更新ハンドラ内でこのようなクエリを実行できるかどうかは分かりません。私は何か明白でないものが見つからない、または私がそれをすることを許されないという非常に良い理由があるように感じます。

どうもありがとうございました

編集:私は私がCouchDBのへ転送する前に、要求を解析する小さなアプリケーションを作成することができます理解していることを追加する必要がありますが、私は私だけにCouchDBの中でこれを実装することができるかどうかを確認するに興味がありました私が別の層なしでどれくらい得ることができるかを理解する!

答えて

1

具体的なケースでは、これを行うのはかなり難しいです。ドキュメント更新ハンドラは、基本的に必要なデータを取得して応答を返す純粋な関数ですが、データベースにアクセスする方法はありません。

urlにdoc idを追加すると、update関数はデータベースからdocとしてパラメータを取得します。詳細はthe CouchDB docs for update functionsを参照してください。

可能な解決策は、身体からIDを抽出するためにCouchDBで書き直しを使用することです。 CouchDB 2.0では、rewrites as functions has been introducedの新しい方法です。

リミットを設定するには、リライト機能を使用すると楽しい音が鳴ります。しかし、実用的なユースケースでは、bodyを解析する小さなnode.jsアプリケーションを作成する方が簡単でメンテナンスが簡単です。

+0

偉大な答えは、ありがとうございます。どうにかして私を渡したので、書き換え機能について知っていると良いです。私はそれが生産用の最良の選択ではないかもしれないが、確かに興味深いことに同意する。 – gtek

関連する問題