1.7. 本地(非复制)文档

本地(非复制)文档接口允许您创建不复制到其他数据库的本地文档。这些文档可用于保存本地CouchDB实例上特别需要的配置或其他信息。

本地文件有以下限制:

  • 本地文档不会复制到其他数据库。

  • 本地文档不是由视图输出的,或者 /{db}/_all_docs 查看。

在CouchDB 2.0中,可以使用/db/u Local_docs端点列出本地文档。

当您要存储给定数据库的当前(本地)实例的配置或其他信息时,可以使用本地文档。

下面提供了可用方法和URL路径的列表:

方法

路径

描述

快,快

/db/_local_docs

返回数据库中所有未复制文档的列表

GET

/db/_local/id

返回非复制文档的最新修订版本

PUT

/db/_local/id

插入未复制文档的新版本

DELETE

/db/_local/id

删除未复制的文档

COPY

/db/_local/id

复制未复制的文档

1.7.1. /db/_local_docs

GET /{db}/_local_docs

返回给定数据库中所有本地文档的JSON结构。信息以JSON结构的形式返回,其中包含有关返回结构的元信息,包括所有本地文档和基本内容的列表,包括ID、revision和key。关键是来自本地文档的 _id .

参数
  • db -- 数据库名称

请求标头
  • Accept --

    • application/json

    • text/plain

查询参数
  • conflicts (boolean) -- 包括 conflicts 回应信息。忽略if include_docs 不是 true . 默认是 false .

  • descending (boolean) -- 按键降序返回本地文档。默认为 false .

  • endkey (string) -- 当达到指定的键时停止返回记录。 可选的 .

  • end_key (string) -- Alias endkey 参数。

  • endkey_docid (string) -- 当到达指定的本地文档ID时停止返回记录。 可选的 .

  • end_key_doc_id (string) -- Alias endkey_docid 参数。

  • include_docs (boolean) -- 在报税表中包括当地文件的全部内容。默认为 false .

  • inclusive_end (boolean) -- 指定指定的结束键是否应包含在结果中。默认为 true .

  • key (string) -- 只返回与指定键匹配的本地文档。 可选的 .

  • keys (string) -- 只返回与指定键匹配的本地文档。 可选的 .

  • limit (number) -- 将返回的本地文档的数量限制为指定的数量。 可选的 .

  • skip (number) -- 在开始返回结果之前跳过此数目的记录。默认为 0 .

  • startkey (string) -- 返回以指定键开头的记录。 可选的 .

  • start_key (string) -- Alias startkey 参数。

  • startkey_docid (string) -- 返回以指定的本地文档ID开头的记录。 可选的 .

  • start_key_doc_id (string) -- Alias startkey_docid 参数。

  • update_seq (boolean) -- 响应包括 update_seq 值,该值指示视图反映的基础数据库的序列id。默认为 false .

响应头
  • Content-Type --

    • application/json

    • text/plain; charset=utf-8

响应JSON对象
  • offset (number) -- 本地文档列表开始位置的偏移量

  • rows (array) -- 视图行对象的数组。默认情况下,返回的信息只包含本地文档ID和修订。

  • total_rows (number) -- 数据库中的本地文档数。请注意,这不是实际查询中返回的行数。

  • update_seq (number) -- 数据库的当前更新序列

状态代码
  • 200 OK -- 请求已成功完成

请求

GET /db/_local_docs HTTP/1.1
Accept: application/json
Host: localhost:5984

响应

HTTP/1.1 200 OK
Cache-Control: must-revalidate
Content-Type: application/json
Date: Sat, 23 Dec 2017 16:22:56 GMT
Server: CouchDB (Erlang/OTP)
Transfer-Encoding: chunked

{
    "offset": null,
    "rows": [
        {
            "id": "_local/localdoc01",
            "key": "_local/localdoc01",
            "value": {
                "rev": "0-1"
            }
        },
        {
            "id": "_local/localdoc02",
            "key": "_local/localdoc02",
            "value": {
                "rev": "0-1"
            }
        },
        {
            "id": "_local/localdoc03",
            "key": "_local/localdoc03",
            "value": {
                "rev": "0-1"
            }
        },
        {
            "id": "_local/localdoc04",
            "key": "_local/localdoc04",
            "value": {
                "rev": "0-1"
            }
        },
        {
            "id": "_local/localdoc05",
            "key": "_local/localdoc05",
            "value": {
                "rev": "0-1"
            }
        }
    ],
    "total_rows": null
}
POST /{db}/_local_docs

POST _local_docs 功能支持中指定的相同参数和行为 :get:`/{{db}}/_local_docs` 但允许将查询字符串参数作为 POST 请求。

请求

POST /db/_local_docs HTTP/1.1
Accept: application/json
Content-Length: 70
Content-Type: application/json
Host: localhost:5984

{
    "keys" : [
        "_local/localdoc02",
        "_local/localdoc05"
    ]
}

返回的JSON是all documents结构,但输出中只有选定的键:

{
    "total_rows" : null,
    "rows" : [
        {
            "value" : {
                "rev" : "0-1"
            },
            "id" : "_local/localdoc02",
            "key" : "_local/localdoc02"
        },
        {
            "value" : {
                "rev" : "0-1"
            },
            "id" : "_local/localdoc05",
            "key" : "_local/localdoc05"
        }
    ],
    "offset" : null
}

1.7.2. /db/_local/id

GET /{db}/_local/{docid}

获取指定的本地文档。语义与访问指定数据库中的标准文档相同,只是文档不被复制。看到了吗 :get:`/{{db}}/{{docid}}` .

PUT /{db}/_local/{docid}

存储指定的本地文档。语义与在指定数据库中存储标准文档相同,只是文档不被复制。看到了吗 :put:`/{{db}}/{{docid}}` .

DELETE /{db}/_local/{docid}

删除指定的本地文档。语义与删除指定数据库中的标准文档相同,只是不复制该文档。看到了吗 :delete:`/{{db}}/{{docid}}` .

COPY /{db}/_local/{docid}

复制指定的本地文档。语义与在指定数据库中复制标准文档相同,只是不复制文档。看到了吗 :copy:`/{{db}}/{{docid}}` .