簡體   English   中英

更新從 MyCouch Extension 調用的函數

[英]Update functions called from MyCouch Extension

我正在嘗試從 MyCouch 調用更新函數。 Mycouch 的文檔僅報告了_design文檔上使用 Post 方法的過時示例。 但是如何使用更新 function

{
  "_id": "_design/artists",
  "language": "javascript",
  "views": {
    "albums": {
        "map": "function(doc) {  if(doc.$doctype !== 'artist') return;  emit(doc.name, doc.albums);}" 
    }
  }
};

client.Documents.Post(designDocumentAsJson);

如何在 _design couchDB 上執行更新 function 推送新文檔?

couchDB 文檔講述了這個調用

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

放置 /{db}/_design/{ddoc}/_update/{func}/{docid}

Executes update function on server side for the specified document.
Parameters: 

    db – Database name
    ddoc – Design document name
    func – Update function name
    docid – Document ID

您可以將如下設計文檔插入數據庫: https://docs.couchdb.org/en/stable/api/ddoc/render.html#db-design-design-doc-update-update-name

{
  "_id": "_design/albums",
  "language": "javascript",
  "updates": {
    "addAlbum": "function(doc, req) {\n    if (!doc){\n      return [null, {'code': 400,\n                     'json': {'error': 'missed',\n                              'reason': 'no document to update'}}]\n    } else {\n        var body = JSON.parse(req.body);\n        doc.albums.push(body.album);\n        return [doc, {'json': {'status': 'ok'}}];\n    }\n}\n"
  }
}

function(無串化):

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

示例文檔:

{
  "_id": "albumsId1",
  "albums": [
    1
  ]
}

Api之后

要求:

POST http://localhost:5984/test/_design/albums/_update/addAlbum/albumsId1
Content-Type:application/json
Accept:application/json

{"album":2}

回復:

{
    "status": "ok"
}

更新后的文檔

{
  "_id": "albumsId1",
  "_rev": "19-7edb16db3bae388685f554138d562bd0",
  "albums": [
    1,
    2
  ]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM