Al probar los filtros para la replicación, me encontré con un problema. Si bien mi filtro funciona como una entrada en la base de datos _replicator, no lo hago cuando uso cURL.Replicación filtrada de CouchDB
El filtro en el documento de diseño es:
{
"_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;
}
}"
}
}
La línea cURL:
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"
creé _Diseño documento/parcial en tanto objetivo y la fuente, pero todos los documentos se replican . Incluso el que tiene un binario adjunto de más de 1 MB. ¡Se agradece cualquier ayuda!
La respuesta cURL es:
{"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}]}
Utilizando cualquiera "en lugar de \" o "en lugar de" el resultado es:
{"error":"bad_request","reason":"invalid UTF-8 JSON: [...]}
¡Gracias! Cambiarlo a 'doc._attachments [attachment] .content_type' y' doc._attachments [attachment] .length' hizo el truco. Pero fyi hay más en la lógica, como permitir jpegs de cualquier longitud y otros criterios que no pegué. – degeeman