私は python-couchdb ライブラリを使用して、継続的なフィードを使用してデータベースの変更をリッスンしています。read
に等しいキーを持つドキュメントのみを提供するフィルターを適用したいと考えていますtrue
。
通常の HTTP GET リクエストでは、目的の結果が得られます。couchdb-python
しかし、ライブラリを介してこれを行う方法を理解できません。これが私が書いたカスタムフィルターです:
def read_true_filter():
return """function(doc, req) {
if(doc.read === true) {
return true;
}
return false;
}
"""
変更をリッスンしようとしている方法は次のとおりです。
db_changes = db.changes(
feed='continuous',
include_docs=True,
heartbeat=1000,
since=last_seq_id,
filter=read_true_filter
)
しかし、これは私にエラーを与えます:
Traceback (most recent call last):
File "../src/couch_pull_pipeline.py", line 87, in <module>
db_changes = db.changes(
File "/Users/sanyam/venv/lib/python3.5/site-packages/couchdb/client.py", line 1027, in _changes
_, _, data = self.resource.get('_changes', **opts)
File "/Users/sanyam/venv/lib/python3.5/site-packages/couchdb/http.py", line 546, in get
return self._request('GET', path, headers=headers, **params)
File "/Users/sanyam/venv/lib/python3.5/site-packages/couchdb/http.py", line 581, in _request
credentials=self.credentials)
File "/Users/sanyam/venv/lib/python3.5/site-packages/couchdb/http.py", line 421, in request
raise ServerError((status, error))
couchdb.http.ServerError: (400, ('bad_request', 'filter parameter must be of the form `designname/filtername`'))
リクエストに追加designname
するのは簡単ですが、couchdb クライアントを使用してこれを行うのと同等のものを見つけることができませんでした。
Pythonライブラリを使用することは可能ですか、それとも単純なHTTPリクエストを使用する必要がありますか、それともcouchdbサーバー自体にフィルターを設定することをお勧めしますか? (私がこれまでに読んだことによると、パフォーマンス上の理由から、そのフィルターをcouchdbに置くことはお勧めできません。)
誰かが私が間違っていること/それをどのように行うかについてのポインタを提供できますか?