0

そのドキュメントの属性に基づいてドキュメントを取得することは可能ですか?

usersメールがすでに存在するかどうかにかかわらず、サインアップ時に自分のテストを行えるようにしたいですか?しかし、私には、ドキュメントを取得できるのは_id...

CouchDBを使用するクラウドサービスとしてCloudantを使用しています。

4

1 に答える 1

2

電子メールアドレスをドキュメントのIDとして使用できるため、同じ電子メールを持つ他のドキュメントを追加することはできません。また、CouchDBの重要な機能であるビューを使用して、挿入前に電子メールが存在するかどうかを確認することもできます。どちらの方法でも、後で競合を解決する必要があります。最初のケースの場合、まだ複製されていない競合するドキュメントを持つ別のCouchノードが存在する可能性があります。2番目のケースでは、2人のユーザーが同じサーバーにアカウントを追加できますが、両方が最初に既存の電子メールをチェックし、次に両方が自分のアカウントを追加します。

ビューを追加するには、計算ビューの定義があるデザインドキュメントを追加する必要があります。map次のような関数を使用してインデックスを作成できます。

function (doc) {
  if (!doc.email) return;
  emit(doc.email, doc);
}

次のコマンドでビューをクエリできます。

http://localhost:5984/YOUR_DTABASE/_design/YOUR_DESIGN_DOCUMENT/_view/YOUR_VIEW?key='e-mail@addre.ss'

電子メールの比較は、期待できるほど簡単ではないことに注意してください。

  1. DNSドメイン名(「@」の後)は大文字と小文字を区別しません(ユーザー名は通常大文字と小文字を区別します)
  2. 通常の電子メールシステムでは、エイリアスを割り当てることができます。
  3. 一部の電子メールシステムでは、宛先フォルダーと、電子メール文字列を変更するが同じボックス(box+folder@domain.comなど)に送信する追加情報を埋め込むことができます。
  4. Gmailは「。」を無視するため、First.Last@gmail.comはFirstL.ast@gmail.comと同じです。
于 2012-11-04T15:43:12.697 に答える