Можно ли использовать шаблоны dust.js в функции "show" в CouchDB? - PullRequest
3 голосов
/ 27 марта 2012

dust.js - это асинхронный движок шаблонов javascript - вы передаете обратный вызов в функцию «render».

Функции «show» 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 Ответ

1 голос
/ 05 мая 2012

Основываясь на предварительном взгляде на источник пыли, он, похоже, ожидает найти некоторые специфичные для nodejs вещи, если они не работают в браузере.В частности, похоже, что dust.compile экспортируется только из кода, который вызывается только если процесс определен, а window - нет.Ни один из них не будет определен при работе с механизмом просмотра CouchDB.

...