gpt4 book ai didi

javascript - couchDB designDoc 开发流程和版本控制

转载 作者:行者123 更新时间:2023-11-30 10:34:23 24 4
gpt4 key购买 nike

为了开发,我想将构成 couchDB 设计文档的各种组件(viewslistsshows)分开例如,将文件与我的其他开发代码放在一个名为 couchDB 的目录中。当我对更改感到满意时,我想使用 couchapp.push 发送到数据库,同时还能够对设计文档组件文件进行版本控制。

我在想也许可以使用 Node 模块“couchapp”和 Node 来扫描目录及其子目录以查找 .js 文件,然后使用它们构 build 计文档并上传到 couchDB。也许子目录结构如下:

designDocsJs
|-- views
| |--view1.js
| |--view2.js
|-- shows
|-- lists

是否可以将 map 和 reduce 放在同一个文件中,例如。 '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);
}

然后从 mycouchappdir 运行 couchapp push


您可能还希望考虑将您的 couchapps 放入它们自己的存储库中。运行 couchapp push 总是会创建对设计文档的新修订。因此,如果您的 couchapp 有不同的存储库,那么当您对存储库进行更改时,这就是对 couchapp 的更改,并且您可以推送它,因为您知道新版本与旧版本不同。

关于javascript - couchDB designDoc 开发流程和版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14909392/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com