Как обновить часть документа в диване базы данных, используя функцию обновления и CURL - PullRequest
0 голосов
/ 15 января 2020

При выполнении обновления в документах couch db с вложенной структурой функция обновления не дает желаемого результата. Обновляет одно из полей, но не остальные.

Функция обновления выглядит следующим образом

{
  "_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"
    }
  ]
}

1 Ответ

0 голосов
/ 16 января 2020

Я могу разрешить ее, используя следующую функцию

curl -u -X PUT http: /// 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, "rangeColour": "Amber"}, {"rangeStart": 75, "rangeEnd": 100, "rangeColour": "Red"}]} '

{"_id": "_design / prjupdrpt", "updates": {"updrptctd": "function (do c , req) {if (do c! = null) {var data = JSON .parse (req.body); for (var idx in do c .reports) {if (do c .reports [idx] .reportId == req.query.reportId) {do c .reports [idx] .reportData.pu sh (данные); return [do c, 'Добавлены запрошенные поля'];} }} return [null, 'Нет такого документа'];} "}}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...