1

我有一个现有的设计文档。我想使用 curl POST 命令导入这个设计视图。这样我就可以在 fauxton 中查看它。

{
    "total_rows": 1,
    "offset": 1,
    "rows": [
        {
            "id": "_design/editor",
            "key": "_design/editor",
            "value": {
                "rev": "1-c74604129e122055f0b58760a7e08ed8"
            },
            "doc": {
                "_id": "_design/editor",
                "_rev": "1-c74604129e122055f0b58760a7e08ed8",
                "language": "javascript",
                "views": {
                    "all_vendors": {
                        "map": "function(doc) {\n  if (doc.type==\"vendor\"){\n  emit(doc.name, doc.name);\n }\n}"
                    }
                }
            }
        }
    ]
}

我正在尝试使用以下命令将此文档添加到现有数据库中

curl -X POST http://127.0.0.1:5984/${db_name}/_design/${design_name}/_view/${view_name}
4

1 回答 1

4

您没有显示您要上传的实际文档,并且您正在使用 POST,所以我不得不猜测一下您在做什么。您是说要上传的文档在数据库中不存在,所以让我们使用 PUT 代替,并删除可能驻留在文档本身中的任何 revs:

% cat ddoc.json 
{"_id":"_design/editor","views":{"all_vendors":{"map":"function (doc) {\n  if (doc.type==\"vendor\"){\n    emit(doc.name, doc.name);\n  }\n}"}},"language":"javascript"}

所以这是您的观点:请注意,没有 _rev 字段。这是至关重要的。让我们将它卷曲到数据库中(我使用的是 Cloudant,但同样的事情应该适用于 couchdb):

% acurl -XPUT 'https://skruger.cloudant.com/source/_design/editor' -d@ddoc.json
{"ok":true,"id":"_design/editor","rev":"3-42790f55c52a203d1e83e0e94c2664a0"}

我现在可以很好地在 fauxton 中看到该视图:

Fauxton 显示上传的 ddoc 视图

和命名视图本身:

在此处输入图像描述

于 2020-02-11T11:31:23.170 回答