【问题标题】:Calling a helper function with callback from a Jade template从 Jade 模板调用带有回调的辅助函数
【发布时间】:2012-05-21 15:40:45
【问题描述】:

我刚刚开始使用 Node.js,所以请原谅任何愚蠢!我正在尝试使用 Node.js 创建一个新应用程序。我将 Express 框架与 Postgresql 数据库一起使用。问题是在我看来,我想调用一个函数。所以我使用了一个从我的玉文件中调用的辅助函数。但是因为这个函数访问数据库,我尝试使用回调来使其工作。

但是,我似乎无法从我的翡翠模板中调用一个函数,并将最后一个参数作为函数。当只传递一个参数并且它不是回调函数时,辅助函数工作正常。但是由于数据库查询需要一段时间,因此数据从未显示出来。但是当我尝试从我的翡翠模板调用一个带有回调的函数时,我得到一个语法错误。

我的翡翠模板中的函数调用:

#{ nameAndVersion(result.bu_entrep_id, function(error, result)) } 

我的辅助函数(很简单,因为我试图让它工作):

exports.helpers= {
nameAndVersion: function(entid, callback) {
var x=1;
     callback(null, x);
     console.log(1);
}
};

我的错误:

500 SyntaxError: Unexpected token )

所以,基本上,我想从我的翡翠模板中调用一个辅助函数,并让该函数成为一个回调函数。

【问题讨论】:

  • 我想在我的网页上显示第二个参数“result”中返回的数据。我试着这样写,它仍然给了我同样的错误。我的代码如下: function(error, result) { console.log(result.rows[0]); }

标签: javascript node.js express pug


【解决方案1】:

你想做的:

  1. 解析模板
  2. 检索数据
  3. 使用数据渲染模板

Express 模板应该做的:

  1. 检索数据
  2. 解析和渲染数据

一旦开始渲染,您就不必执行复杂的代码(如果您的数据库不可用怎么办?)。

Jade helper 仅具有格式化目的,没有功能。

您应该做的是在调用渲染器时提供必要的数据,而不是调用帮助器。

app.get('anyPage', function(req, res) {
   database.doSomeDataBaseQuery( /* Data base callback */ function(data, err) {
     if(!err) res.render('pageTemplate', {dataBaseData:data});
   }
});

【讨论】:

    猜你喜欢
    • 2016-01-08
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    相关资源
    最近更新 更多