对于开发,我想将构成 couchDB 设计文档的各种组件 ( views
, lists
, shows
) 作为单独的文件与我的其他开发代码一起保存在名为 couchDB 的目录中。当我对更改感到满意时,我想使用 couchapp.push 发送到数据库,同时还能够对设计文档组件文件进行版本控制。
我在想也许使用节点模块“couchapp”和节点来扫描目录及其子目录中的 .js 文件,然后使用它们来构建设计文档并上传到 couchDB。也许子目录的结构如下:
designDocsJs
|-- views
| |--view1.js
| |--view2.js
|-- shows
|-- lists
是否可以将 map 和 reduce 放在同一个文件中,例如。'view1.js'
或者他们需要在单独的文件中'view1-map.js'
吗'view1-reduce.js'
?
目前我正在使用以下内容,但我不确定如何使用节点读取 .js 文件并将它们动态添加到 ddoc.views{} ?任何指导将不胜感激,特别是使用 javascript/node 解决方案。
var couchapp = require('couchapp')
, path = require('path');
ddoc = {
_id: '_design/entitiesNew'
, views: {}
, lists: {}
, shows: {}
}
// node module exports
module.exports = ddoc;
// REPLACE ME WITH SOME WAY OF READING A
// STRUCTURED DIR OF .JS FILES AND COMBINING
// AS NECESSARY
ddoc.views.byType = {
map: function(doc) {
emit(doc.type, null);
},
reduce: '_count'
}
couchapp.loadAttachments(ddoc, path.join(__dirname, '_attachments'));
进而:
$ cd path/to/here
$ mkdir _attachments
$ couchapp push updateCouchDbDesigndocs.js http://localhost:5984/databaseName