1

ログ メッセージを格納するデータベースがあるとします。各メッセージには、優先度日付、およびメッセージの情報が含まれています。アプリケーションは、優先順位によって制限され、日付順に並べられたログ メッセージを照会できる必要があります。したがってby_priority、 のキーで呼び出されるビューを作成すると、少なくとも次のリクエストを使用して、[doc.priority, doc.date]少なくとも の優先度値を持つすべてのメッセージを簡単に照会できます。$X

GET $database/_design/$design/_view/by-priority?startkey=[$X]&endkey=[{}]

次に、アプリケーションを拡張して、指定された基準で新しいメッセージが到着したときに自動的にフェッチするようにします。これを行うには、(クエリ パラメータで渡されmin_priorityた) 優先度以上のメッセージを選択するというフィルタを追加し、次のリクエストを行います。$Xprio

GET $database/_changes?filter=$design/max_priority&prio=$X

ただし、これは、サーバー (フィルター関数を介して) とクライアント (およびの値を構築することにより)で選択ロジック (最小、最大、優先度の範囲、優先度日付による) を複製する必要があることを意味します。startkeyendkey

同じロジックを 2 回実装する必要は本当にありますか?

または、少なくともビューとフィルター関数の間でドキュメントのキーと値のペアを生成するコードを共有することは可能ですか? このようにして、ビュー関数を呼び出してstartkeyandendkeyパラメーターを受け入れる各ビューの汎用フィルター関数を使用できます。キーを比較するための CouchDB のアルゴリズムにアクセスする方法も必要です。そのために JavaScript からアクセスできる関数はありますか?

4

1 に答える 1

0

ビューやフィルター間でコードの重複を排除することは現在可能ではないと思いますが、そのような機能へのアクセスを提供するクエリ サーバーを想像することは確かに可能です。

于 2013-03-29T13:49:54.073 に答える