2016-08-18 38 views
-1

我碰到下面的錯誤,而試圖使我的網頁的NodeJS發送後無法設置標題。使用HBS

Can't set headers after they are sent. 

下面是什麼,我試圖做

res.render('information', { 
        name: rows[i].name, 
        boxId: rows[i].box 
       }); 

     console.log(rows[i].name); 

它打印出在控制檯中正確的信息,所以我知道這是正確的,但得到的信息呈現在頁面information是一個問題

{{#each items}} 
     <form method="post" action=""> 
      <input type="hidden" value="{{BoxId}}"> 
      <button type="submit">{{name}}</button> 
     </form> 
    {{/each}} 

本質上頁我在試圖運行一個for循環,在這裏必須使用數據庫中的每個項目生成一個新的按鈕表單。如果有5個具有名稱和框值的項目,則應該產生5次與它們各自的值和名稱設置。

但是,這是一個次要問題,因爲即使做<h3> {{name}} </h3>它不起作用,我得到設置頭問題。

任何幫助,將不勝感激。 正在使用的模板語言: http://handlebarsjs.com/

+0

你是否在回調中獲取行然後渲染模板? – Mankind1023

+0

我懷疑是通過調用'res.render()'來引起錯誤。您的路由處理程序中可能還有一些其他代碼,或者可能已經發送響應的中間件堆棧。你能展示更多的上下文嗎?就像正在檢索「行」一樣。 – robertklep

回答

0

我不知道你是如何設置這個設置的,但是在for循環中是res.render本身?如果是這樣,通過在模板本身傳遞整個數據集的模板,循環,是這樣的:

var data = { 
rows: rows 
} 
res.render('information', data); 

而且在模板:

{{#each rows}} 
    {{this.propName}} 
{{/each}} 

如果您有嵌套數據,你可以嵌套{{#each}}語句。