0

質問

標準のcouchdb検証機能の一部として他のcouchdbドキュメントをクエリすることは可能ですか?

そうでない場合、couchdb検証関数内の検証ルールの一部として他のドキュメントのプロパティを含めるための標準的なアプローチは何ですか?

根拠

検証機能が、名簿エントリフィールドの1つにある「電子メール」の値が同じである2つ以上のエントリを防ぐことを目的とした、ありふれた名簿アプリケーションについて考えてみます。

郵便番号が米国ベースの郵便番号であるかどうかに基づいて、個別のドキュメントで検証ルールを指定できる名簿アプリケーションも検討してください。

4

1 に答える 1

2

いいえ、validate_doc_update関数内の他のcouchdbドキュメントをクエリすることはできません。それぞれが単独で実行され、新しいドキュメント、古いドキュメント、およびユーザー(該当する場合)への参照のみが渡されます。

私の個人的な経験では、重複チェックを処理するためのオプションが少なくとも3つあります。

  1. CloudantをCouchDBプロバイダーとして使用します。実験したい場合は、今のところ無料の階層を提供しますが、CouchDBデータベースのノード間の一貫性を保証します。(#2を参照)
  2. タイプキーをIDとして使用する名前には、セカンダリ「予約テーブル」を使用しました。次に、Cloudantのようなシステムを使用していない場合は、競合をチェックする必要があります。基本的に、重複を防ぐためのキーを維持する簡単なドキュメントがあります。競合を監視する必要があることを考えると、コードを書くのは楽しいことではありません。(cloudantを使用する場合でも、失敗した書き込み要求に対処する必要がありますが、複数のノード間でのデータレプリケーションを取り巻くタイミングの問題に対処するよりも簡単です)。
  3. たとえば、MySQLのような従来のDBを使用して、説明しているような特定のデータ値に対して一意で一貫性のあるインデックスを維持できます。ただし、ドキュメントはCouchDBに保存してください。別のデータプロバイダーが必要になるのは少し面倒ですが、信頼性があります。
  4. (オプション:CouchDBは、構築しているシステムのタイプに最適ではないと判断します)
于 2012-10-29T20:57:00.860 に答える