2016-08-18 66 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}}语句。

相关问题