couchDB designDoc开发工作stream程和版本控制
对于开发,我希望将构成couchDBdevise文档的各种组件( views
, lists
, shows
)作为单独的文件保存在一个名为couchDB的dir中,例如我的其他开发代码。 当我对变化感到满意时,我想使用couchapp.push发送到数据库,同时也能够对devise文档组件文件进行版本控制。
我想可能使用节点模块'couchapp'和节点扫描一个目录及其子目录.js文件,然后使用它们来构builddevise文档并上传到couchDB。 也许子结构如下所示:
designDocsJs |-- views | |--view1.js | |--view2.js |-- shows |-- lists
是否有可能把地图和减less在同一个文件,例如。 'view1.js'
或者他们需要在单独的文件'view1-map.js'
和'view1-reduce.js'
?
Curretnly我正在使用以下,但我不知道如何去阅读使用节点的.js文件,并dynamic地将它们添加到ddoc.views {}? 任何指导将不胜感激,特别是与JavaScript /节点解决scheme。
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
couchapp工具就是这样做的。 我推动使用couchapp和其他脚本。
这是目录结构:
mycouchappdir |-- views/ |-- myview1/ |-- map.js |-- reduce.js |-- shows/ |-- myshow1.js |-- myshow2.js |-- _attachments/ |-- myattachment.png
你的map.js文件如下所示:
function(doc) { emit(doc.type, null); }
然后从mycouchappdir
运行mycouchappdir
。
你也可以考虑把你的couchapps放在自己的仓库里。 运行couchapp push
始终为devise文档创build一个新的修订版本。 所以如果你的couchapp有不同的版本库,那么当你修改版本库的时候,对couchapp是一个改变,你可以知道新版本与旧版本不同。