发送后无法设置标题。使用HBS
问题描述:
我碰到下面的错误,而试图使我的网页的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/
答
我不知道你是如何设置这个设置的,但是在for循环中是res.render本身?如果是这样,通过在模板本身传递整个数据集的模板,循环,是这样的:
var data = {
rows: rows
}
res.render('information', data);
而且在模板:
{{#each rows}}
{{this.propName}}
{{/each}}
如果您有嵌套数据,你可以嵌套{{#each}}语句。
你是否在回调中获取行然后渲染模板? – Mankind1023
我怀疑是通过调用'res.render()'来引起错误。您的路由处理程序中可能还有一些其他代码,或者可能已经发送响应的中间件堆栈。你能展示更多的上下文吗?就像正在检索“行”一样。 – robertklep