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

时间:2010-12-11 15:37:47

标签: curl couchdb

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

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

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

2 个答案:

答案 0 :(得分:21)

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

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

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

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

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

答案 1 :(得分:7)

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

为什么?

  1. 设计文档是一个JSON对象,它们在编辑器中重载的scufold是众所周知的。例如 - 没有注释,每个字符串,包括键属性必须包装在字符串中,依此类推。
  2. JSON文档不是为了包含函数而设计的。 Couch-DB解决方案要求将函数字符串化 - 这使得它们难以编辑。 编辑器需要将函数转换为可行格式,编辑它并再次对其进行字符串化。
  3. CouchDB要求udpated文档与现有文档的版本匹配(并在更新成功时重新调整下一个版本)。这需要编辑器跟踪版本并在每次希望应用更新时使用它们。
  4. 附件 - 例如,用于地图功能之间代码重用的基础,或者通常用于直接从CouchDB的Web服务器提供的应用程序 - 很难管理,因为每个附件通常是单独上传的,或者与甚至更大的scufold。
  5. 这些问题的解决方案是CLI实用程序,它允许编辑器处理普通的JavaScript文件,然后他可以像以前一样检入SCM代码文件,并且在命令下使用CLI工具将它们转换为他有效的JSON,并将其上传到目标CouchDB以及您需要更新的所有附件(如果有的话)。

    此类解决方案 - 将是:

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

    我个人使用couchapp over NodeJS。 玩得开心:))

    更新,约2年后

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