2017-04-02 24 views
0

ノードと非同期の新機能で、まだコンセプトに苦しんでいます。ノードとエクスプレスで繰り返しレンダリング

express/handlebarsを使用しようとすると、コールバックを使用してレンダリングされ、配列のコンテンツを含む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); 
} 

どのように私はこの問題に近づいているはずですか?

ハンドルバー#eachヘルパーを使用して繰り返しを開始しようとしましたが、すべての例では単純なリストが表示されますが、私の場合はレンダリングに渡す複数の配列パラメータがあります。

答えて

0

私はあなたがこれで達成しようとしていることはまだ分かりませんが、確かに、私はあなたのビュー内ですべてのループを行うことが良いと思います。あなたのビューにレンダリングします。また、リクエストごとに1回のみ応答することができます。

+0

ビューで解決してくれてありがとうSerjuice。むしろそのアプローチを押して、それが私のために働いています。これで、ビューエンジンにオブジェクトの配列を渡し、そこに並べ替えます。 – PJ62

関連する問題