使用来自Jade模板的回调调用辅助函数

时间:2012-05-14 06:42:42

标签: javascript node.js express pug

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

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

我的函数调用我的jade模板:

#{ 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 )

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

1 个答案:

答案 0 :(得分:3)

你想这样做:

  1. 解析模板
  2. 检索数据
  3. 使用数据渲染模板
  4. 预计快速模板化:

    1. 检索数据
    2. 解析并渲染数据
    3. 开始渲染后,您不必执行复杂的代码(如果数据库不可用,该怎么办?)。

      Jade助手只有形成目的,而不是功能。

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

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