Próbowałem filtrów do replikacji, natknąłem się na problem. Podczas gdy mój filtr działa jako wpis w bazie _replicator, nie jest używany podczas korzystania z cURL.CouchDB Filtrowana replikacja
Filtr w dokumencie projektu jest:
{
"_id": "_design/partial",
"filters": {
"mobile": "function(doc, req) {
if (doc._attachments) {
var result = new Boolean(true);
for (attachment in doc._attachments) {
if (attachment.content_type == 'image/jpeg') {
return true;
}
if (doc._attachments.length > 1024) {
result = false;
}
}
return result;
} else {
return true;
}
}"
}
}
zwijającego linia:
curl -X POST http://admin:[email protected]:5985/ _replicate -d '{\"source\":\"http://admin:[email protected]:5984/docs2\",\"target\":\"docs2_partial\",\"filter\":\"partial/mobile\",\"create_target\":true}' -H "Content-Type: application/json"
stworzyłem _design/dokument częściowe zarówno cel i źródła, ale wszystkie dokumenty są replikowane . Nawet ten z dołączonym plikiem binarnym większym niż 1 MB. Każda pomoc jest doceniana!
zwijającego odpowiedź brzmi:
{"ok":true,"session_id":"833ff96d21278a24532d116f57c45f31","source_last_seq":32,"replication_id_version":2,"history":[{"session_id":"833ff96d21278a24532d116f57c45f31","start_time":"Wed, 17 Aug 2011 21:43:46 GMT","end_time":"Wed, 17 Aug 2011 21:44:22 GMT","start_last_seq":0,"end_last_seq":32,"recorded_seq":32,"missing_checked":0,"missing_found":28,"docs_read":28,"docs_written":28,"doc_write_failures":0}]}
Korzystanie albo "zamiast \" lub "zamiast" wynik to:
{"error":"bad_request","reason":"invalid UTF-8 JSON: [...]}
Dziękujemy! Zmiana tego na 'doc._attachments [attachment] .content_type' oraz' doc._attachments [attachment] .length' zmyśliło. Ale fyi jest coś więcej w logice, jak zezwolenie na jpeg o dowolnej długości i inne kryteria, których nie wkleiłem. – degeeman