私はpython-couchdbライブラリを使用して、連続フィードを使用してデータベースの変更を監視しています。私は、read
と等しいキーを持つ文書のみを与えるフィルタを適用したいと考えています。true
です。python couchdbでフィルタリングされた変更を取得するには
通常のHTTP GETリクエストでは、目的の結果が得られます。しかし、私はcouchdb-python
ライブラリ経由でこれを行う方法を理解することができません。ここで私が書いたカスタムフィルタさ:
db_changes = db.changes(
feed='continuous',
include_docs=True,
heartbeat=1000,
since=last_seq_id,
filter=read_true_filter
)
しかし、これは私にエラーを与える:
def read_true_filter():
return """function(doc, req) {
if(doc.read === true) {
return true;
}
return false;
}
"""
をここでは、私は変化を聞くしようとしている方法です
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にそのフィルタを置くのは良い考えではありません)。
私が間違っていることについて/それ?