由于我不熟悉CouchDB,我想使用node-couchdb模块创建视图吗?
我能够使用UI(Futon)创建视图,但是我想使用node-couchdb模块使用节点代码创建视图。 另外,如何添加设计文档? 添加文件和设计文件是否相同?
有人可以帮忙吗?
答案 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
});