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()
函数使用
- 状态码:
200 OK – 请求成功完成
500 Internal Server Error – 查询服务器错误
函数:
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()
函数使用
- 状态码:
200 OK – 请求成功完成
500 Internal Server Error – 查询服务器错误
函数:
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 函数名称
- 响应头:
ETag – 响应签名
Transfer-Encoding –
chunked
- 查询参数:
format (string) – 返回响应的格式。由
provides()
函数使用
- 状态码:
200 OK – 请求成功完成
500 Internal Server Error – 查询服务器错误
函数:
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 函数名称
- 响应头:
ETag – 响应签名
Transfer-Encoding –
chunked
- 查询参数:
format (string) – 返回响应的格式。由
provides()
函数使用
- 状态码:
200 OK – 请求成功完成
500 Internal Server Error – 查询服务器错误
函数:
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 – 创建/更新的文档的修订版
- 状态码:
200 OK – 没有创建或更新文档
201 Created – 文档已创建或更新
500 Internal Server Error – 查询服务器错误
函数:
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 – 创建/更新的文档的修订版
- 状态码:
200 OK – 没有创建或更新文档
201 Created – 文档已创建或更新
500 Internal Server Error – 查询服务器错误
函数:
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" }