2. JSON 结构参考

以下附录提供了对您可以提供给 CouchDB 的所有 JSON 结构的快速参考,或者作为对请求的返回。

2.1. 所有数据库文档

字段

描述

total_rows

数据库/视图中的文档数量

offset

文档列表开始的偏移量

update_seq (可选)

数据库的当前更新序列

rows [数组]

文档对象的数组

2.2. 批量文档响应

字段

描述

docs [数组]

批量文档返回的文档

id

文档 ID

error

错误类型

reason

带有扩展原因的错误字符串

2.3. 批量文档

字段

描述

docs [数组]

批量文档文档

_id (可选)

文档 ID

_rev (可选)

修订 ID (更新现有文档时)

_deleted (可选)

是否应删除文档

2.4. 数据库的更改信息

字段

描述

last_seq

最后更新序列

pending

提要中剩余项目的数量

results [数组]

对数据库进行的更改

seq

更新序列

id

文档 ID

changes [数组]

此文档的逐字段更改列表

2.5. CouchDB 文档

字段

描述

_id (可选)

文档 ID

_rev (可选)

修订 ID (更新现有文档时)

2.6. CouchDB 错误状态

字段

描述

id

文档 ID

error

错误类型

reason

带有扩展原因的错误字符串

2.7. CouchDB 数据库信息对象

字段

描述

db_name

数据库的名称。

committed_update_seq

已提交更新的数量。

doc_count

数据库中的文档数量。

doc_del_count

已删除文档的数量。

compact_running

如果数据库压缩例程正在对该数据库进行操作,则设置为 true。

disk_format_version

数据存储在硬盘上的物理格式的版本。

disk_size

存储在磁盘上的数据的字节大小。视图索引不包含在计算中。

instance_start_time

指示数据库打开时间的日期戳,以自纪元以来的微秒表示。

purge_seq

数据库上的清除操作数量。

update_seq

数据库的当前更新序列。

2.8. 设计文档

字段

描述

_id

设计文档 ID

_rev

设计文档修订

views

视图

viewname

视图定义

map

视图的映射函数

reduce (可选)

视图的归约函数

2.9. 设计文档信息

字段

描述

name

设计文档的名称/ID

view_index

视图索引

compact_running

指示视图上是否当前正在运行压缩例程

disk_size

存储在磁盘上的视图的字节大小

language

定义视图的语言

purge_seq

已处理的清除序列

signature

设计文档视图的 MD5 签名

update_seq

已编入索引的相应数据库的更新序列

updater_running

指示视图是否当前正在更新

waiting_clients

等待来自此设计文档的视图的客户端数量

waiting_commit

指示基础数据库中是否有待处理的提交需要处理

2.10. 带有附件的文档

字段

描述

_id (可选)

文档 ID

_rev (可选)

修订 ID (更新现有文档时)

_attachments (可选)

文档附件

filename

附件信息

content_type

MIME 内容类型字符串

data

文件附件内容,Base64 编码

2.11. 活动任务列表

字段

描述

tasks [数组]

活动任务

pid

进程 ID

status

任务状态消息

task

任务名称

type

操作类型

2.12. 复制设置

字段

描述

source

源数据库名称或 URL。

target

目标数据库名称或 URL。

cancel (可选)

取消复制。

checkpoint_interval (可选)

指定检查点间隔(以毫秒为单位)。

continuous (可选)

将复制配置为连续进行。

create_target (可选)

创建目标数据库。

doc_ids (可选)

要同步的文档 ID 数组。

filter (可选)

过滤器函数的名称,格式为 ddoc/myfilter

source_proxy (可选)

源复制应通过其进行的代理服务器的地址。

target_proxy (可选)

目标复制应通过其进行的代理服务器的地址。

query_params (可选)

传递给过滤器函数的查询参数;该值应是一个包含参数作为成员的文档。

selector (可选)

选择包含在复制中的文档。与使用 filter 选项相比,此选项提供了性能优势。

since_seq (可选)

复制应从其开始的序列。

use_checkpoints (可选)

是否使用复制检查点。

winning_revs_only (可选)

仅复制获胜的修订。

use_bulk_get (可选)

尝试使用 _bulk_get 获取修订。

2.13. 复制状态

字段

描述

ok

复制状态

session_id

唯一的会话 ID

source_last_seq

从源数据库读取的最后一个序列号

history [数组]

复制历史记录

session_id

此复制操作的会话 ID

recorded_seq

最后记录的序列号

docs_read

读取的文档数量

docs_written

写入目标的文档数量

doc_write_failures

文档写入失败的数量

start_time

复制操作开始的日期/时间

start_last_seq

更改流中的第一个序列号

end_time

复制操作完成的日期/时间

end_last_seq

更改流中的最后一个序列号

missing_checked

检查的丢失文档数量

missing_found

找到的丢失文档数量

bulk_get_attempts

尝试的 _bulk_get 获取次数

bulk_get_docs

使用 _bulk_get 读取的文档数量

2.14. 请求对象

字段

描述

body

请求主体数据作为 字符串。如果请求方法是 GET,则此字段包含值 "undefined"。如果方法是 DELETEHEAD,则该值为 ""(空字符串)。

cookie

Cookie 对象

form

表单数据 对象。如果 Content-Type 标头为 application/x-www-form-urlencoded,则包含解码后的主体作为键值对。

headers

请求标头 对象

id

如果指定了请求的文档 ID,则为 字符串,否则为 null

info

数据库信息

method

请求方法作为 字符串数组。字符串值为方法,如以下之一:HEADGETPOSTPUTDELETEOPTIONSTRACE。否则,它将表示为字符代码数组。

path

请求的路径部分列表。

peer

请求源 IP 地址。

query

URL 查询参数 对象。请注意,不支持多个键,最后一个键值会覆盖其他键值。

requested_path

实际请求的路径部分列表。

raw_path

原始请求路径 字符串

secObj

安全对象.

userCtx

用户上下文对象.

uuid

由配置文件中指定的算法生成的 UUID。

{
    "body": "undefined",
    "cookie": {
        "AuthSession": "cm9vdDo1MDZBRjQzRjrfcuikzPRfAn-EA37FmjyfM8G8Lw",
        "m": "3234"
    },
    "form": {},
    "headers": {
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
        "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.3",
        "Accept-Encoding": "gzip,deflate,sdch",
        "Accept-Language": "en-US,en;q=0.8",
        "Connection": "keep-alive",
        "Cookie": "m=3234:t|3247:t|6493:t|6967:t|34e2:|18c3:t|2c69:t|5acb:t|ca3:t|c01:t|5e55:t|77cb:t|2a03:t|1d98:t|47ba:t|64b8:t|4a01:t; AuthSession=cm9vdDo1MDZBRjQzRjrfcuikzPRfAn-EA37FmjyfM8G8Lw",
        "Host": "127.0.0.1:5984",
        "User-Agent": "Mozilla/5.0 (Windows NT 5.2) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.75 Safari/535.7"
    },
    "id": "foo",
    "info": {
        "committed_update_seq": 2701412,
        "compact_running": false,
        "db_name": "mailbox",
        "disk_format_version": 6,
        "doc_count": 2262757,
        "doc_del_count": 560,
        "instance_start_time": "1347601025628957",
        "purge_seq": 0,
        "sizes": {
          "active": 7580843252,
          "disk": 14325313673,
          "external": 7803423459
        },
        "update_seq": 2701412
    },
    "method": "GET",
    "path": [
        "mailbox",
        "_design",
        "request",
        "_show",
        "dump",
        "foo"
    ],
    "peer": "127.0.0.1",
    "query": {},
    "raw_path": "/mailbox/_design/request/_show/dump/foo",
    "requested_path": [
        "mailbox",
        "_design",
        "request",
        "_show",
        "dump",
        "foo"
    ],
    "secObj": {
        "admins": {
            "names": [
                "Bob"
            ],
            "roles": []
        },
        "members": {
            "names": [
                "Mike",
                "Alice"
            ],
            "roles": []
        }
    },
    "userCtx": {
        "db": "mailbox",
        "name": "Mike",
        "roles": [
            "user"
        ]
    },
    "uuid": "3184f9d1ea934e1f81a24c71bde5c168"
}

2.15. Request2 对象

字段

描述

body

请求主体数据作为 字符串。如果请求方法是 GET,则此字段包含值 "undefined"。如果方法是 DELETEHEAD,则该值为 ""(空字符串)。

cookie

Cookie 对象

headers

请求标头 对象

method

请求方法作为 字符串数组。字符串值为方法,如以下之一:HEADGETPOSTPUTDELETEOPTIONSTRACE。否则,它将表示为字符代码数组。

path

请求的路径部分列表。

peer

请求源 IP 地址。

query

URL 查询参数 对象。请注意,不支持多个键,最后一个键值会覆盖其他键值。

requested_path

实际请求的路径部分列表。

raw_path

原始请求路径 字符串

secObj

安全对象.

userCtx

用户上下文对象.

2.16. 响应对象

字段

描述

code

HTTP 状态代码 数字

json

JSON 可编码 对象。隐式地将 Content-Type 标头设置为 application/json

body

原始响应文本 字符串。隐式地将 Content-Type 标头设置为 text/html; charset=utf-8

base64

Base64 编码的 字符串。隐式地将 Content-Type 标头设置为 application/binary

headers

响应头 对象。来自此对象的 Content-Type 头会覆盖任何隐式分配的头。

停止

布尔值 信号,用于停止遍历视图结果行(仅适用于列表函数)

警告

对象键 bodybase64json 彼此重叠,最后一个键优先。由于大多数键值对象实现不保留键顺序,或者如果它们混合使用,可能会出现混乱的情况。尝试只使用其中一个。

注意

任何自定义属性都会导致 CouchDB 抛出内部异常。此外,响应对象 可以是一个简单的字符串值,它将被隐式包装到 {"body": ...} 对象中。

2.17. 返回的带有详细修订信息的 CouchDB 文档

字段

描述

_id (可选)

文档 ID

_rev (可选)

修订 ID (更新现有文档时)

_revs_info [数组]

CouchDB 文档扩展修订信息

rev

完整的修订字符串

status

修订的状态

2.18. 返回的带有修订信息的 CouchDB 文档

字段

描述

_id (可选)

文档 ID

_rev (可选)

修订 ID (更新现有文档时)

_revisions

CouchDB 文档修订

ids [数组]

有效修订 ID 数组,按逆序排列(最新修订在最前面)

start

最新修订的前缀数字

2.19. 返回的带有附件的文档

字段

描述

_id (可选)

文档 ID

_rev (可选)

修订 ID (更新现有文档时)

_attachments (可选)

文档附件

filename

附件

stub

指示附件是否为存根

content_type

MIME 内容类型字符串

length

附件数据的长度(字节)

revpos

此附件存在的修订版本

2.20. 安全对象

字段

描述

admins

具有管理员权限的角色/用户

roles [数组]

具有父级权限的角色列表

names [数组]

具有父级权限的用户列表

members

具有非管理员权限的角色/用户

roles [数组]

具有父级权限的角色列表

names [数组]

具有父级权限的用户列表

{
    "admins": {
        "names": [
            "Bob"
        ],
        "roles": []
    },
    "members": {
        "names": [
            "Mike",
            "Alice"
        ],
        "roles": []
    }
}

2.21. 用户上下文对象

字段

描述

db

在提供的操作上下文中,数据库名称。

name

用户名。

roles

用户角色列表。

{
    "db": "mailbox",
    "name": null,
    "roles": [
        "_admin"
    ]
}

2.22. 视图头信息

字段

描述

total_rows

视图中的文档数量

offset

文档列表开始的偏移量

{
    "total_rows": 42,
    "offset": 3
}