【发布时间】:2013-08-28 10:54:38
【问题描述】:
CouchDB 使用 javascript 来验证、查询、做 map-reduce 等等。我想知道有没有办法在这些 javascript 函数中使用 node.js 库?比如使用require('http')或者安装了npm的一些第三方模块。
谢谢。
【问题讨论】:
标签: javascript node.js couchdb couchapp commonjs
CouchDB 使用 javascript 来验证、查询、做 map-reduce 等等。我想知道有没有办法在这些 javascript 函数中使用 node.js 库?比如使用require('http')或者安装了npm的一些第三方模块。
谢谢。
【问题讨论】:
标签: javascript node.js couchdb couchapp commonjs
您可以使用 Node.js 库,只要它们不需要特定于 Node.js 的库,例如 http。例如,async 在 CouchDB 中工作。经验法则:如果它适用于服务器和客户端,你应该很好。
您可以使用 CommonJS 的 module.exports 和 exports[something] 模式在视图之间共享代码。查看the documentation了解更多详情。
例如,考虑这个视图:
{
_id:"_design/test",
views: {
lib: {
test: "exports.guests = 42;"
},
fish_per_person: {
map: function(doc){
var guests = require('views/lib/test').guests; // 42
emit(doc.number_of_fish, doc.number_of_fish / guests);
}
}
}
}
fish_per_person 视图需要在 lib/test 中导出的值 guests。
【讨论】:
child_process 在CouchDB 更新处理程序中编译和运行它。
不,没有办法从 CouchDb 内部的 Node 模块使用外部 JavaScript。你可以做一些有限的分享:http://wiki.apache.org/couchdb/HTTP_view_API#Sharing_Code_Between_Views
Node 是一个暴露于 Javascript 语言绑定的平台,因此 Node 的“优点”在于执行环境。
虽然有一种方法可以使用 Python 编写视图,但我不知道 Node 有什么类似的东西。
【讨论】: