es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  ,

Answer

  1. Avatar for 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”.

Comments are closed.