【问题标题】:Doing an async call within a dynamicHelper (use res.locals) in Express 3.x在 Express 3.x 中的 dynamicHelper(使用 res.locals)中进行异步调用
【发布时间】:2023-12-24 02:49:01
【问题描述】:

我想使用 res.locals 创建一个 dynamicHelper。 例如:

res.locals.someHelper = function(arg){
  Model.find(arg, function(err, docs){
    return docs;
  });
}

好吧,我会在任何视图中使用它。例如:

- each item in someHelper(arg)
  = item

【问题讨论】:

    标签: node.js express helper


    【解决方案1】:

    不要在视图助手中进行异步调用。您应该在调用视图渲染之前准备好所有这些异步数据,这样您就可以同步使用它们。

    为此,您可以在路由器中使用async 模块。

    async.parallel({
      name: function (callback) {
        Model.find(arg, callback);
      },
      age: function (callback) {
        Model.find(arg, callback);
      }
    }, function (err, results) {
      for (var i in results) {
        res.local[i] = results[i];
      }
      return next();
    });
    

    【讨论】:

      最近更新 更多