2017-04-02 59 views
0

对于节点和异步而言仍然是新手,并且仍然在与概念一起苦苦挣扎。使用节点和快速迭代渲染

尝试使用express/handleb以回调呈现,以迭代方式使用数组中的内容构建html正文。最终目标是发送一个包含多个电子邮件的响应,每个电子邮件都使用view.hbs单独呈现。

有这么远,但意识到它永远不会工作。 res.render无法将我的html变量传递回回,res.send会在渲染完成之前运行?

function buildRes (req, res, email) { 
    var html = ''; 
    Object.keys(email).forEach(function (i) { 
     res.render('emailPanel', {subject: email[i].subject, body: email[i].body}, 
      function(err, renOut) { 
       if err throw err; 
       html=html+renOut; 
      } 
     ) 
    }) 
    res.send(html); 
} 

有关我应该如何解决这个问题的任何建议?

开始尝试使用handlebars #each helper来做迭代,但所有的例子都显示了一个简单的列表,而在我的情况下,有多个数组参数要传递给渲染。

回答

0

我还不确定你想用这个来完成什么,但有一点是肯定的,我认为通过传递整个数组(过滤)res来完成视图内部的所有循环会更好。呈现给你的观点。另请注意,每个请求只能响应一次。

+0

谢谢Serjuice指着我在视图中解决它。采取这种方法,而且这对我来说很有效。现在将一组对象传递给视图引擎并将其排序。 – PJ62