使用node-couchdb模块创建视图

时间:2018-07-24 07:01:00

标签: node.js couchdb couchdb-futon

由于我不熟悉CouchDB,我想使用node-couchdb模块创建视图吗?

我能够使用UI(Futon)创建视图,但是我想使用node-couchdb模块使用节点代码创建视图。 另外,如何添加设计文档? 添加文件和设计文件是否相同?

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

CouchDB设计文档只是其_id字段以with _ design`开头的另一个文档。

您可以通过使用官方Apache CouchDB Nano库将设计文档简单地插入任何其他文档中来创建设计文档:

const Nano = require('nano')
const nano = Nano('http://localhost:5984')
const db = nano.db.use('mydb')

const ddoc = {
  "_id": "_design/report",
  "views": {
    "bydate": {
      "reduce": "_count",
      "map": "function(doc) {\n  if (doc.type === 'click') {\n emit(doc.x, doc.y);\n  }\n}"
    }
  },
  "language": "javascript"
}

db.insert(ddoc, function(err, data) {

});

答案 1 :(得分:0)

我们可以使用 node-couchdb 模块创建视图或设计文档,如下所示:

couch.insert(_dbname, {
    "_id": "_design/query-demo",
    "views": {
        "full-name": {
            "map": "function (doc) {  emit(doc._id, doc);}"
        }
    },
    "language": "javascript"
});

在此示例中,全名将是视图名称, query-demo 将是设计文档名称

我们可以通过以下方式从该视图获取数据:

couch.get(_dbname, '_design/query-demo/_views/full_name', {}).then(({ data, headers, status }) => {
    console.log(data);
    // data is json response
    // headers is an object with all response headers
    // status is statusCode number
}, err => {
    console.log(err);
    // either request error occured
    // ...or err.code=EDOCMISSING if document is missing
    // ...or err.code=EUNKNOWN if statusCode is unexpected
});