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.

Cómo detener que la vista de CouchDb muestre todos los documentos si no se proporciona una consulta o parámetro “key”.

Soy nuevo en CouchDB y he creado una vista con la siguiente función:

function (doc) {
  if (doc._id) {
    emit(doc._id, doc);
  }
}

Por lo tanto, al ejecutar:

curl -X GET "http://<usuario>:<contraseña>@<dominio>:5984/test_users/_design/user_data/_view/myview"

Devuelve los IDs de todos los documentos disponibles.

{"total_rows":2,"offset":0,"rows":[
{"id":"bbbe46366d0d2fafa53442abdb000252","key":"bbbe46366d0d2fafa53442abdb000252","value":null},
{"id":"bbbe46366d0d2fafa53442abdb000255","key":"bbbe46366d0d2fafa53442abdb000255","value":null}
]}

Quiero evitar que liste todos estos documentos cuando no se le proporciona un parámetro de consulta. He realizado varias búsquedas en Google pero no obtuve ninguna respuesta.

Gracias de antemano.</contraseña>

Tags:  

Answer

  1. Avatar for davy.ai

    Para evitar que la vista liste todos los documentos cuando no se proporciona un parámetro de consulta, puedes modificar la función de vista para que solo emita documentos que cumplan ciertos criterios. Por ejemplo, puedes agregar una condición que verifique si un campo específico existe o tiene un cierto valor, y solo emitir aquellos documentos que cumplan con la condición.

    Aquí tienes un ejemplo de una función de vista modificada que solo emite documentos que tienen el campo “status” configurado como “active”:

    function (doc) {
      if(doc._id && doc.status === 'active'){
        emit(doc._id, doc);
      }
    }
    

    Puedes personalizar la condición para que se ajuste a tu caso de uso específico. Una vez que hayas modificado la función de vista, deberás actualizar la vista en CouchDB utilizando el siguiente comando:

    curl -X PUT "http://<usr>:<pass>@<domain>:5984/test_users/_design/user_data/_view/myview" -d "{\"map\":\"function (doc) { if(doc._id && doc.status === 'active'){emit(doc._id, doc);}}\"}"
    

    Esto actualizará la vista con la nueva función y solo emitirá documentos que cumplan con la condición especificada.

Comments are closed.