在couchdb 中,可以在Javascript 中定义map 和reduce 函数,并通过HTTP POST 将它们提交到服务器以定义视图。凉爽的。
应用程序指定相应函数的字符串表示。
我正在使用文本编辑器 emacs 构建一个连接到 couchdb 的 JS 应用程序。这让我可以像这样定义 map 和 reduce 函数:
var byname = function(doc) {
emit(doc.name,null);
};
这给了我 emacs 语法高亮、jslint 检查等等。
在运行时,我可以得到这样定义的一组视图函数中的每一个的字符串表示,并将其发送到 CouchDB,方法是:
doc = { views: { empty: { map:stringRep(empty) },
byname: { map:stringRep(byname) },
invalid: { map:stringRep(invalid) }}};
// PUT that doc to couchdb here, to define the design_doc .
但字符串表示包括换行符、回车符等。
我可以用正则表达式替换过滤掉那些,这适用于简单的情况。但函数中还有更复杂的注释行情况。例如:
var byname = function(doc) {
// a comment here
emit(doc.name,null);
};
在这种情况下,stringRep 将包含注释,但如果我消除了换行符和虚拟空格,注释仍然存在。我也可以更换这些,但可能还有其他问题(不确定)。
人们是否有一种典型或推荐的方式来清理他们的 javascript 函数,然后再将它们发送到 couchdb?