【问题标题】:How to replicate design documents only?如何仅复制设计文档?
【发布时间】:2011-09-05 14:44:46
【问题描述】:

所以我想将我对设计文件所做的一些更改从开发复制到生产(也就是我想部署一些东西)。

我有点困惑,因为我的研究没有得出任何具体的结果。尽管这就像一个非常明显的用例,但恕我直言。

我错过了什么吗?

【问题讨论】:

    标签: couchdb


    【解决方案1】:

    您可以指定要复制的文档 ID,而无需编写过滤器。像这样发布复制文档(或命令):

    { "source": "my_db"
    , "target": "http://target:5984/target_db"
    , "doc_ids": [ "_design/my_ddoc" ]
    }
    

    【讨论】:

    • 也是更快的解决方法。谢谢!
    • 请确保您使用 admin 用户在 target pass user/pass in the url "target":"admin:password@ip/db" 下成功复制,只有管理员可以创建设计文档
    【解决方案2】:

    您可以使用“过滤复制”(有关详细信息,请参阅http://wiki.apache.org/couchdb/Replication#Filtered_Replication

    基本上,您将为设计文档提供一个返回 true 的函数,例如:

    function(doc, req) {
      return "_design/" === doc._id.substr(0, 8)
    }
    

    然后将 "filter":"ddocname/filtername" 添加到您的 _replicate 请求正文中。

    【讨论】:

    • 在这种情况下,您可能只想复制 JasonSmith 所示的命名 ID,而不是执行更一般的复制。
    • 罗伯特的解决方案最直接地回答了这个问题。在我的解决方案中,您必须知道文档 ID。在他的文章中,CouchDB 为您解决了这个问题。我认为在实践中,人们确实知道他们的设计文档 ID。
    • 我发现过滤器非常慢。在大多数情况下,使用设计文档的名称会更好。
    • 这非常适合每个用户的数据库模式。特别是如果您已经在进行过滤复制以填充新用户数据库。
    【解决方案3】:

    我将我的设计文档作为 .js 文件存储在磁盘上。然后我使用couchdb-update-views 更新服务器上的设计文档

    npm install -g couchdb-update-views
    couchdb-update-views --config /path/to/config.json --docsDir /path/to/design/docs/directory/
    

    【讨论】:

      猜你喜欢
      • 2012-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多