如何使用cURL将设计文档上传到CouchDB?

Ran*_*ohn 15 curl couchdb

我正在尝试学习CouchDB,我可以在Futon中创建视图等,但我想在桌面上编写我的设计文档并使用cURL上传它们."权威指南"显示使用cURL更新内容文档,但所有设计文档都是Futon或CouchApp.

我想将当前的设计文档下载到本地文件,编辑文件,然后将其发送回CouchDB.

下载和上传CouchDB设计文档的cURL命令是什么?

Vic*_*let 21

将数据库"dev-task"中的设计文件"task"下载到文件"task.json":

curl http://localhost:5984/dev-task/_design/task > task.json
Run Code Online (Sandbox Code Playgroud)

编辑文件后,您可以将其放回原处.

curl -X PUT http://localhost:5984/dev-task/_design/task -d @task.json
Run Code Online (Sandbox Code Playgroud)

这有效,因为task.json包含适当的修订号.如果要再次更改文件,则需要先重新下载该文件以获取最新版本号.


Rad*_*own 7

尽管Victor Nicollet的回答是正确的,但最好还是看看CouchApp等CLI工具. - 轻松启动,非常有效.这些工具也很稳定,很久以前就已经成熟,并且不断得到社区贡献者的推动.

为什么?

  1. 设计文档是一个JSON对象,它们在编辑器中重载的scufold是众所周知的.例如 - 没有注释,每个字符串,包括键属性必须包装在字符串中,依此类推.
  2. JSON文档不是为包含函数而设计的.Couch-DB解决方案要求将函数字符串化 - 这使得它们难以编辑.编辑器需要将函数转换为可行格式,编辑它并再次对其进行字符串化.
  3. CouchDB要求udpated文档与现有文档的版本匹配(并在更新成功时重新调整下一个版本).这需要编辑器跟踪版本并在每次希望应用更新时使用它们.
  4. 附件 - 例如,基本用于地图功能之间的代码重用,或者通常用于直接从CouchDB的Web服务器提供的应用程序 - 很难管理,因为每个附件通常都是单独上传的,或者甚至更大的附件.

这些问题的解决方案是CLI实用程序,它允许编辑器处理普通的JavaScript文件,然后他可以像习惯一样检入SCM代码文件,并且命令让CLI工具将它们转换为有效的JSON for他,并将其与您需要更新的所有附件(如果有)一起上传到目标CouchDB.

这样的解决方案 - 将是:

  • CouchApp有两种口味(python和NodeJS)
  • Kanzo(实际上更多,而不是任何人,但绝对值得一提)

我个人使用couchapp而不是NodeJS.玩得开心 :)

更新,约2年后

这是另一个值得一提的工具,虽然我不得不说我是关于它的bios.它被称为ddocs.它基于与node-couchapp相同的原理,并且针对持续集成流程以及个人开发.它使用package.json中的指定部分来保存有关ddocs部署的信息,并允许开发人员/构建服务器使用CLI args覆盖任何配置.