【问题标题】:couchdb replicate one direction doesnt work continuouslycouchdb 复制一个方向不能连续工作
【发布时间】:2020-10-07 11:37:28
【问题描述】:

我想将所有设计文档和一些包含字段 clientId 的文档从原始 (A) 复制到复制 (B)。

我尝试了两种方法,但都遇到了同样的问题:

它会持续更新我的设计文档,但不会更新带有 clientId 的普通文档。它们只在创建复制时复制一次。

1.试试

curl -H 'Content-Type: application/json' \
            -X POST http://admin:*******@mycare.owitec.lan:5984/_replicator \
            -d '{
                "continuous" : true,
                "create_target" : true,
                "source" : {
                                               "url": "http://mycare.owitec.lan:5984/mycare_10001",
                                               "headers": {
                                                 "Authorization": "Basic YWRtaW46QXNkZmdoKjU9"
                                               }
                                             },
                "target" : {
                                               "url": "http://mycare.owitec.lan:5984/mycare_rep_10001",
                                               "headers": {
                                                 "Authorization": "Basic YWRtaW46QXNkZmdoKjU9"
                                               }
                                             },
                "filter": "article/clientDataRep"
            }'

    function(doc, req) {
    var v = doc._id.substr(0, 6);
  
    if (v === '_desig' || v === '10001:') {
        return true;
    }
    return false;
}

2。试试

curl -H 'Content-Type: application/json' \
        -X POST http://admin:********@mycare.owitec.lan:5984/_replicator \
        -d '{
            "continuous" : true,
            "create_target" : true,
            "source" : {
                                           "url": "http://mycare.owitec.lan:5984/mycare_10001",
                                           "headers": {
                                             "Authorization": "Basic YWRtaW46QXNkZmdoKjU9"
                                           }
                                         },
            "target" : {
                                           "url": "http://mycare.owitec.lan:5984/mycare2_rep_10001",
                                           "headers": {
                                             "Authorization": "Basic YWRtaW46QXNkZmdoKjU9"
                                           }
                                         },
            "selector": { "clientId": {"$exists": false} }
        }'

我还检查了两个数据库是否存在冲突,两者都没有。我究竟做错了什么?在我有双向复制(从/到)的其他数据库中,我没有问题!

【问题讨论】:

    标签: couchdb replication


    【解决方案1】:

    设计文档的 validate_doc_update 函数检查了两件事:

    如果是更新,那么你必须是作者或有一定的规则

    根据 doc.type 对象只允许某些字段,我有不符合的旧数据

    复制一直在运行我只是没有注意到(想想)validate_doc_update 正在过滤它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-09
      • 2018-04-12
      • 1970-01-01
      • 2014-01-28
      • 1970-01-01
      • 2011-06-27
      相关资源
      最近更新 更多