可以在CouchDB“show”函数中使用dust.js模板吗?

时间:2012-03-27 17:43:43

标签: couchdb dust.js

dust.js是一个异步的javascript模板引擎 - 你将回调传递给"渲染"功能

CouchDB"显示"另一方面,函数实际上必须返回HTML。

所以我不能在我的节目功能中使用dust.js!...它只是不会工作。 如何解决这个同步/异步问题?

编辑: 我应该能够通过使用(异步)"发送"功能:

function(doc,req){
    var dust = require('lib/dust');
    dust.renderSource('Hello, my name is {name}',{name:'Nick'},function(err,output){
        send(output);
    });
}

..但这不起作用,我明白了:

{"error":"render_error","reason":"function raised error: (new TypeError(\"dust.compile is not a function\", \"\", 37)) \nstacktrace: (\"Hello, my name is {name}\")@:37\n(\"Hello, my name is {name}\",[object Object],(function (err, output) {send(output);}))@:33\n([object Object],[object Object])@:2\napply([object Object],[object Array])@:0\nrunShow(function (doc, req) {var dust = require(\"lib/dust\");dust.renderSource(\"Hello, my name is {name}\", {name:\"Nick\"}, function (err, output) {send(output);});},[object Object],[object Array])@/usr/share/couchdb/server/main.js:886\n(function (doc, req) {var dust = require(\"lib/dust\");dust.renderSource(\"Hello, my name is {name}\", {name:\"Nick\"}, function (err, output) {send(output);});},[object Object],[object Array])@/usr/share/couchdb/server/main.js:989\napply(null,[object Array])@:0\n(\"_design/ibs_policies\",[object Array],[object Array])@/usr/share/couchdb/server/main.js:1401\napply(null,[object Array])@:0\n()@/usr/share/couchdb/server/main.js:1443\n@/usr/share/couchdb/server/main.js:1454\n"}

似乎" dust.js"当作为CommonJS模块导入时,它是不是暴露了它的所有功能? 这是为什么? 我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

基于对尘埃源的初步看法,如果它没有在浏览器中运行,它似乎期望找到一些特定于nodejs的东西。特别是,看起来像dust.compile只从代码中导出,只有在定义了进程而窗口不被调用时才会被调用。在CouchDB的视图引擎下运行时都不会定义。