为了进行开发,我想将构成沙发数据库设计文档的各个组件(views
,lists
,shows
)与我的其他开发代码一起保存在单独的文件中,例如我的其他开发代码在一个称为bedDB的目录中。
当我对更改感到满意时,我想使用ouchapp.push发送到数据库,同时还能够对设计文档组件文件进行版本控制。
我在想,也许使用节点模块'couchapp'和节点来扫描目录及其子目录中的.js文件,然后使用它们来构建设计文档并上传到bedDB。
也许子目录的结构如下:
designDocsJs
|-- views
| |--view1.js
| |--view2.js
|-- shows
|-- lists
是否有可能将地图和缩小放在同一文件中。
'view1.js'
还是需要将它们放在单独的文件'view1-map.js'
和'view1-reduce.js'
中?目前,我正在使用以下内容,但是我不确定如何使用node读取.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
最佳答案
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);
}
然后只需从
couchapp push
运行mycouchappdir
。您可能还希望考虑将Couchapps放在自己的存储库中。运行
couchapp push
始终会为设计文档创建一个新修订。因此,如果您的榻榻米应用程序具有不同的存储库,则对存储库进行更改时,它就是对榻榻米应用程序的更改,您可以在知道新修订版与旧修订版不同的情况下将其推送。