【问题标题】:Display document of CouchDB in JSON format以 JSON 格式显示 CouchDB 的文档
【发布时间】:2021-04-09 20:49:45
【问题描述】:

我需要以 JSON 格式获取文档

视图如下所示

function (doc) {
  emit(doc._id); 
}

设计文件如下所示

  {
  "_id": "_design/rtls",
  "_rev": "14-cad60060017c38957f6e4388cb37914b",
  "views": {
    "rtls": {
      "map": "function (doc) {\n  emit(doc._id);\n}"
    }
  },
  "language": "javascript"
}

当我获得以下链接的以下数据 `http://127.0.0.1:5984/rtls/_design/rtls/_view/rtls?include_docs=true

{"total_rows":4,"offset":0,"rows":[
{"id":"1",
"key":"1",
"value":null,
"doc":{
    "_id":"1",
    "_rev":"39-6ff9597a13572e831728c2e2631eb425",
    "al":[{
         "id16":"0x3f1a",
         "pos":{"x":17.49,"y":10.97,"z":0.01}}],,
"tl":[],
"Timestamp":272179.0,
"Oid":"apoorva-VirtualBox",
"resultTime":"2021-01-03T23:02:29.059Z"}
 }
........
]}

但我需要以下格式

[
{"id":"1",
"key":"1",
"value":null,
"_id":"1",
"_rev":"39",
"al":[{
      "id16":"0x3f1a",
      "pos":{"x":17.49,"y":10.97,"z":0.01}}],
"tl":[],
"Timestamp":272179.0,
"Oid":"apoorva-VirtualBox",
"resultTime":"2021-01-03T23:02:29.059Z"
}
]

我对 CouchDB 非常陌生。任何输入表示赞赏。 提前致谢。

【问题讨论】:

  • 视图创建的索引与_all_docs endpoint 公开的主索引完全匹配。为什么?另外,为什么必须输出是你需要的格式?您无法控制客户端处理吗?
  • 因为我把所有东西都命名为我猜的一样。我必须阅读 Vue.js 中的 JSON。如果我可以让视图以 JSON 格式提供数据,那么整个过程会很容易。

标签: javascript couchdb


【解决方案1】:

CouchDB 提供list functions 来转换视图结果。正如您在文档中看到的,这些函数在 CouchDB 3.x 中已弃用,并将在 4.x 中删除。您可以在短期内解决需求,但最好不要长期依赖它

尝试在您的设计文档中定义一个列表函数,如下所示(“列表”元素):

   {
  "_id": "_design/rtls",
   "views": {
    "rtls": {
      "map": "function (doc) {\n  emit(doc._id, 1);\n}"
    }
  },
  "lists": {
    "doc-list": "function (head,req) { start({'headers': {'Content-Type': 'application/json'}});  var row; var docs=[]; while (row = getRow()) {docs.push(row.doc)}; send(toJSON(docs));  }"
  },
  "language": "javascript"
}

并使用此操作查询数据库

/db/_design/rtls/_list/doc-list/rtls?include_docs=true

由于已弃用,最好将此逻辑放在您的应用程序中。

【讨论】:

  • 感谢您的回复。但我无法使用上述设计文档。我收到错误“文档更新冲突”。
  • 是_rev属性,你必须更新你的修订版。我从示例中删除了 _rev。
猜你喜欢
  • 2020-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多