1.5.7. /db/_design/design-doc/_show/show-name

警告

在 CouchDB 3.0 中,show 函数已弃用,将在 CouchDB 4.0 中移除。

GET /{db}/_design/{ddoc}/_show/{func}
POST /{db}/_design/{ddoc}/_show/{func}

show 函数 应用于 null 文档。

请求和响应参数取决于函数实现。

参数:
  • db – 数据库名称

  • ddoc – 设计文档名称

  • func – show 函数名称

响应头:
  • ETag – 响应签名

查询参数:
  • format (string) – 返回响应的格式。由 provides() 函数使用

状态码:

函数:

function(doc, req) {
    if (!doc) {
        return {body: "no doc"}
    } else {
        return {body: doc.description}
    }
}

请求:

GET /recipes/_design/recipe/_show/description HTTP/1.1
Accept: application/json
Host: localhost:5984

响应:

HTTP/1.1 200 OK
Content-Length: 6
Content-Type: text/html; charset=utf-8
Date: Wed, 21 Aug 2013 12:34:07 GMT
Etag: "7Z2TO7FPEMZ0F4GH0RJCRIOAU"
Server: CouchDB (Erlang/OTP)
Vary: Accept

no doc

1.5.8. /db/_design/design-doc/_show/show-name/doc-id

警告

在 CouchDB 3.0 中,show 函数已弃用,将在 CouchDB 4.0 中移除。

GET /{db}/_design/{ddoc}/_show/{func}/{docid}
POST /{db}/_design/{ddoc}/_show/{func}/{docid}

show 函数 应用于指定文档。

请求和响应参数取决于函数实现。

参数:
  • db – 数据库名称

  • ddoc – 设计文档名称

  • func – show 函数名称

  • docid – 文档 ID

响应头:
  • ETag – 响应签名

查询参数:
  • format (string) – 返回响应的格式。由 provides() 函数使用

状态码:

函数:

function(doc, req) {
    if (!doc) {
        return {body: "no doc"}
    } else {
        return {body: doc.description}
    }
}

请求:

GET /recipes/_design/recipe/_show/description/SpaghettiWithMeatballs HTTP/1.1
Accept: application/json
Host: localhost:5984

响应:

HTTP/1.1 200 OK
Content-Length: 88
Content-Type: text/html; charset=utf-8
Date: Wed, 21 Aug 2013 12:38:08 GMT
Etag: "8IEBO8103EI98HDZL5Z4I1T0C"
Server: CouchDB (Erlang/OTP)
Vary: Accept

An Italian-American dish that usually consists of spaghetti, tomato sauce and meatballs.

1.5.9. /db/_design/design-doc/_list/list-name/view-name

警告

在 CouchDB 3.0 中,list 函数已弃用,将在 CouchDB 4.0 中移除。

GET /{db}/_design/{ddoc}/_list/{func}/{view}
POST /{db}/_design/{ddoc}/_list/{func}/{view}

list 函数 应用于同一设计文档中的 view 函数

请求和响应参数取决于函数实现。

参数:
  • db – 数据库名称

  • ddoc – 设计文档名称

  • func – list 函数名称

  • view – view 函数名称

响应头:
查询参数:
  • format (string) – 返回响应的格式。由 provides() 函数使用

状态码:

函数:

function(head, req) {
    var row = getRow();
    if (!row){
        return 'no ingredients'
    }
    send(row.key);
    while(row=getRow()){
        send(', ' + row.key);
    }
}

请求:

GET /recipes/_design/recipe/_list/ingredients/by_name HTTP/1.1
Accept: text/plain
Host: localhost:5984

响应:

HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
Date: Wed, 21 Aug 2013 12:49:15 GMT
Etag: "D52L2M1TKQYDD1Y8MEYJR8C84"
Server: CouchDB (Erlang/OTP)
Transfer-Encoding: chunked
Vary: Accept

meatballs, spaghetti, tomato sauce

1.5.10. /db/_design/design-doc/_list/list-name/other-ddoc/view-name

警告

在 CouchDB 3.0 中,list 函数已弃用,将在 CouchDB 4.0 中移除。

GET /{db}/_design/{ddoc}/_list/{func}/{other-ddoc}/{view}
POST /{db}/_design/{ddoc}/_list/{func}/{other-ddoc}/{view}

list 函数 应用于其他设计文档中的 view 函数

请求和响应参数取决于函数实现。

参数:
  • db – 数据库名称

  • ddoc – 设计文档名称

  • func – list 函数名称

  • other-ddoc – 包含 view 函数的其他设计文档名称

  • view – view 函数名称

响应头:
查询参数:
  • format (string) – 返回响应的格式。由 provides() 函数使用

状态码:

函数:

function(head, req) {
    var row = getRow();
    if (!row){
        return 'no ingredients'
    }
    send(row.key);
    while(row=getRow()){
        send(', ' + row.key);
    }
}

请求:

GET /recipes/_design/ingredient/_list/ingredients/recipe/by_ingredient?key="spaghetti" HTTP/1.1
Accept: text/plain
Host: localhost:5984

响应:

HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
Date: Wed, 21 Aug 2013 12:49:15 GMT
Etag: "5L0975X493R0FB5Z3043POZHD"
Server: CouchDB (Erlang/OTP)
Transfer-Encoding: chunked
Vary: Accept

spaghetti

1.5.11. /db/_design/design-doc/_update/update-name

POST /{db}/_design/{ddoc}/_update/{func}

在服务器端执行 update 函数,用于 null 文档。

参数:
  • db – 数据库名称

  • ddoc – 设计文档名称

  • func – update 函数名称

响应头:
  • X-Couch-Id – 创建/更新的文档的 ID

  • X-Couch-Update-NewRev – 创建/更新的文档的修订版

状态码:

函数:

function(doc, req) {
    if (!doc){
      return [null, {'code': 400,
                     'json': {'error': 'missed',
                              'reason': 'no document to update'}}]
    } else {
        doc.ingredients.push(req.body);
        return [doc, {'json': {'status': 'ok'}}];
    }
}

请求:

POST /recipes/_design/recipe/_update/ingredients HTTP/1.1
Accept: application/json
Content-Length: 10
Content-Type: application/json
Host: localhost:5984

"something"

响应:

HTTP/1.1 404 Object Not Found
Cache-Control: must-revalidate
Content-Length: 52
Content-Type: application/json
Date: Wed, 21 Aug 2013 14:00:58 GMT
Server: CouchDB (Erlang/OTP)

{
    "error": "missed",
    "reason": "no document to update"
}

1.5.12. /db/_design/design-doc/_update/update-name/doc-id

PUT /{db}/_design/{ddoc}/_update/{func}/{docid}

在服务器端执行 update 函数,用于指定文档。

参数:
  • db – 数据库名称

  • ddoc – 设计文档名称

  • func – update 函数名称

  • docid – 文档 ID

响应头:
  • X-Couch-Id – 创建/更新的文档的 ID

  • X-Couch-Update-NewRev – 创建/更新的文档的修订版

状态码:

函数:

function(doc, req) {
    if (!doc){
        return [null, {'code': 400,
                       'json': {'error': 'missed',
                                'reason': 'no document to update'}}]
    } else {
        doc.ingredients.push(req.body);
        return [doc, {'json': {'status': 'ok'}}];
    }
}

请求:

POST /recipes/_design/recipe/_update/ingredients/SpaghettiWithMeatballs HTTP/1.1
Accept: application/json
Content-Length: 5
Content-Type: application/json
Host: localhost:5984

"love"

响应:

HTTP/1.1 201 Created
Cache-Control: must-revalidate
Content-Length: 16
Content-Type: application/json
Date: Wed, 21 Aug 2013 14:11:34 GMT
Server: CouchDB (Erlang/OTP)
X-Couch-Id: SpaghettiWithMeatballs
X-Couch-Update-NewRev: 12-a5e099df5720988dae90c8b664496baf

{
    "status": "ok"
}