Consulta de documentos de diseño de CouchDB/PouchDB con startkey endkey no funciona.
En mi base de datos tengo (no solo) dos tipos de documentos en una relación uno a muchos. Intenté manejar esto de la siguiente manera:
{
_id : "class:xyz",
type: "class",
... otras claves ...
}
{
_id : "class:xyz:pupil:abc",
type: "pupil",
... otras claves ...
}
Si consulto mis documentos con allDocs()
como:
http://url_de_mi_servidor:5984/mi_base_de_datos/_all_docs?include_docs=true&?startkey="class:xyz:pupil:"&endkey="class:xyz:pupil:\ufff0"
Obtengo todos los documentos de tipo pupil
relacionados con el documento mencionado de tipo class
, como se desea.
Para mejorar el rendimiento, tuve la idea de introducir un documento de diseño para consultar solo los documentos de tipo pupil
y no todos los documentos cada vez:
{
"_id": "_design/types",
"language": "javascript",
"views": {
"classes": {
"map": "function(doc){ if(doc.type == \"class\"){emit(doc.id, doc);} }"
},
"pupils": {
"map": "function(doc){ if(doc.type == \"pupil\"){emit(doc.id, doc);} }"
}
}
}
Pero si consulto con este documento de diseño como:
http://url_de_mi_servidor:5984/mi_base_de_datos/_design/types/_view/pupils?include_docs=true&?startkey="class:xyz:pupil:"&endkey="class:xyz:pupil:\ufff0"
No obtengo ningún resultado (solo un arreglo vacío/sin filas).
¿Cuál es mi error o qué está mal en mi concepción? Actualmente no tengo idea. Gracias de antemano por sus consejos.
davy.ai
Parece que hay un error en los parámetros startkey y endkey de la consulta con el documento de diseño. El startkey debería ser “class:xyz:pupil:abc” y el endkey debería ser “class:xyz:pupil:\ufff0” para recuperar todos los documentos con identificadores que comienzan con “class:xyz:pupil:”.
Por lo tanto, la consulta correcta sería:
http://url_de_mi_servidor:5984/mi_base_de_datos/_design/types/_view/pupils?include_docs=true&startkey=“class:xyz:pupil:abc”&endkey=”class:xyz:pupil:\ufff0”
Esto debería recuperar todos los documentos de tipo “pupil” que están relacionados con el documento “class” de id “class:xyz”.