为了进行开发,我想将构成沙发数据库设计文档的各个组件(viewslistsshows)与我的其他开发代码一起保存在单独的文件中,例如我的其他开发代码在一个称为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始终会为设计文档创建一个新修订。因此,如果您的榻榻米应用程序具有不同的存储库,则对存储库进行更改时,它就是对榻榻米应用程序的更改,您可以在知道新修订版与旧修订版不同的情况下将其推送。

09-26 04:56