使用 node-couchdb 模块创建视图

Creating Views using node-couchdb module

由于我是 CouchDB 的新手,我想使用 node-couchdb 模块创建视图?

我可以使用 UI(Futon) 创建视图,但我想使用节点代码使用 node-couchdb 模块创建视图。 另外,如何添加设计文档? 添加文档和设计文档一样吗?

有人可以帮忙吗?

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) {

});

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

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

在此示例中,full-name 将是视图名称,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
});