Couchdb 如何使用update函数和CURL更新coach db中文档的一部分

Couchdb 如何使用update函数和CURL更新coach db中文档的一部分,couchdb,Couchdb,在嵌套结构的coach db文档中执行更新时,update函数不会提供所需的输出。它会更新其中一个字段,但不会更新其余字段 更新功能如下所示 { "_id": "_design/prjupdate", "_rev": "48-f0ce642e0b4f6730cae40b0b9748b61c", "updates": { "updatebyid": "function(doc, req){\r\n for(var idx in doc.reports) {\r\n if (

在嵌套结构的coach db文档中执行更新时,update函数不会提供所需的输出。它会更新其中一个字段,但不会更新其余字段

更新功能如下所示

{
  "_id": "_design/prjupdate",
  "_rev": "48-f0ce642e0b4f6730cae40b0b9748b61c",
  "updates": {
    "updatebyid": "function(doc, req){\r\n  for(var idx in doc.reports) {\r\n  if (doc.reportId == null) {\r\n doc.reports[idx].reportId = req.query.reportId; \r\n doc.reports[idx].reportType = req['userCtx']['reportType']; \r\n doc.reports[idx].reportCreationDate = req.query.reportCreationDate; \r\n  return [doc, 'Created reportId'];\r\n}}}"
  }
}

CURL is curl -u <user:password> -X PUT http://<host:port>/projects/_design/prjupdate/_update/updatebyid/8b3aa3289291671ad4456ee6acaa5027?reportId=1000014&reportType="summary"&reportCreationDate="2015-12-14T00:00:00"


This updates only partially like

{
  "_id": "8b3aa3289291671ad4456ee6acaa5027",
  "_rev": "58-36e132d518cc00af42bb6e2245eae7e0",
  "name": "sruti1234",
  "reports": [
    {
      "reportId": "1000014"
    }
  ]
}
{
“_id”:“_设计/更新”,
修订版:“48-f0ce642e0b4f6730cae40b0b9748b61c”,
“更新”:{
“updatebyid”:“函数(doc,req){\r\n for(doc.reportId==null){\r\n if(doc.reportId==null){\r\n doc.reportId=req.query.reportId;\r\n doc.reports[idx].reportType=req['userCtx']['reportType'];\r\n doc.reportId[idx].reportCreationDate=req.query.reportCreationDate;\r\n返回[doc,'已创建的reportId'];\r\r\n}”
}
}
CURL是CURL-u-X PUThttp:///projects/_design/prjupdate/_update/updatebyid/8b3aa3289291671ad4456ee6acaa5027?reportId=1000014&reportType=“摘要”和reportCreationDate=“2015-12-14T00:00:00”
此更新仅部分类似于
{
“_id”:“8b3aa3289291671ad4456ee6acaa5027”,
“修订版”:“58-36e132d518cc00af42bb6e2245eae7e0”,
“名称”:“sruti1234”,
“报告”:[
{
“报告ID”:“1000014”
}
]
}

我可以使用以下函数解决它

curl-u-X-PUThttp:///projects/_design/prjupdrpt/_update/updrptctd/013efdccb137eef7b2dc854cdc0b9d0e?reportId=1000036 -d'{“toolName”:“summary”,“reportName”:“summary”,“reportScore”:75,“reportDate”:“2020-01-15 07:22:41”,“reportStatus”:“success”,“guageRagLimits”:[{“rangeStart”:0,“rangeEnd”:25,“rangeColour”:“Green”},{“rangeStart”:25,“rangeEnd”:75,“RangeColor”:“琥珀色”},{“rangeStart”:75,“rangeEnd”:100,“RangeColor”:“红色”}]}'

{ “_id”:“_设计/prjupdrpt”, “更新”:{ “updrptctd”:“函数(doc,req){if(doc!=null){var data=JSON.parse(req.body);for(doc.reports中的var idx){if(doc.reports[idx].reportId==req.query.reportId){doc.reports[idx].reportData.push(data);return[doc',添加了请求的字段'];}}}return[null',无此类文档';” }
}

我能够更新现有文档{u id:“{u design/prjupdnew”,“updates:{“updnew”:“function(doc,req){if(doc!=null){var data=JSON.parse(req.body);doc['reports']=data;return[doc',添加了请求的字段'];}return[null',No-this doc']}但我无法在现有数组中添加新的更新,而不必传递数组的所有元素