2010-12-11 17 views
13

Estoy tratando de aprender CouchDB y puedo crear vistas y cosas así en Futon, pero quiero escribir mis documentos de diseño en el escritorio y subirlos usando cURL. La 'Guía definitiva' muestra la actualización de documentos de contenido con cURL, pero todos los documentos de diseño son Futon o CouchApp.¿Cómo cargo un documento de diseño a CouchDB usando cURL?

Me gustaría descargar el documento de diseño actual a un archivo local, editar el archivo y luego enviarlo a CouchDB.

¿Qué son los comandos cURL para descargar y cargar documentos de diseño de CouchDB?

Respuesta

19

Descargar el archivo de diseño "tarea" en la base de datos "dev-tarea" para presentar "task.json":

curl http://localhost:5984/dev-task/_design/task > task.json 

Una vez que se edita el archivo, se puede poner de nuevo.

curl -X PUT http://localhost:5984/dev-task/_design/task -d @task.json 

Esto funciona porque task.json contiene un número de revisión correspondiente. Si desea volver a cambiar el archivo, primero debe volver a descargarlo para obtener el último número de revisión.

6

A pesar de la respuesta de Victor Nicollet es cierto, en su mayoría es recomendable echar un vistazo a las herramientas CLI como CouchApp. - Fácil comienzo y muy efectivo. Además, estas herramientas son estables, ya han llegado a su madurez hace mucho tiempo y mejoran constantemente gracias a la comunidad de colaboradores.

¿Por qué?

  1. El documento de diseño es un objeto JSON, y estos son conocidos por el exceso de memoria que sobrecargan en su editor. Por ejemplo, sin comentarios, cada cadena, incluidos los atributos clave, debe estar envuelta en cadenas, y demás.
  2. Los documentos JSON no están diseñados para contener funciones. La solución Couch-DB requiere que las funciones se vuelvan codificadas, lo que dificulta su edición. Se requerirá un editor para convertir la función a un formato viable, editarla y volver a codificarla.
  3. El CouchDB requiere que el documento empapado coincida con la versión existente (y le devuelve la siguiente versión cuando la actualización se realiza correctamente). Esto requiere que el editor rastree las versiones y las use cada vez que desee aplicar una actualización.
  4. Los archivos adjuntos, que son, por ejemplo, elementales para la reutilización de códigos entre funciones de mapa, o se usan a menudo para aplicaciones que se sirven directamente desde el servidor web de CouchDB, son difíciles de administrar, porque cada archivo adjunto generalmente se carga por separado o con incluso más scufold.

La solución a estos problemas son las utilidades de la CLI que permiten al editor trabajar en archivos JavaScript normales que luego puede registrar en un SCM como archivos de código de la misma manera que está acostumbrado. a un JSON válido para él, y cárguelo en el CouchDB de destino junto con todos los archivos adjuntos que necesite actualizar, si corresponde.

Tales Soluciones - serían:

  • CouchApp en que es 2 sabores (Python y nodejs)
  • Kanzo (esto es, de hecho, mucho más, y no para nadie, pero definitivamente Worths mencionar)

Personalmente uso couchapp over NodeJS. Diviértase :)

actualizado, ~ 2 años más tarde

Aquí es otra herramienta que vale la pena mencionar, aunque voy a tener que decir que estoy bios al respecto. Se llama ddocs. Está basado en los mismos principios que node-couchapp, y está dirigido a flujos de integración continuos, así como a desarrollo personal. Utiliza una sección designada en package.json para mantener la información sobre la implementación de ddocs y para permitir que el desarrollador/servidor de compilación anule cualquier configuración mediante CLI args.

+0

excelente respuesta, pero nos dejaste colgando con "kanzo es mucho más _____" - ¡¿mucho más qué ?! – Armand

+0

es mucho más que una simple herramienta para cargar un ddoc, bueno, es casi un paradigma. Pero todo esto está fuera del alcance de esta pregunta, así que, básicamente, es una invitación para al menos echar un vistazo :) –

Cuestiones relacionadas