发送后无法设置headers。在 NodeJS 中使用 HBS

Can't set headers after they are sent. in NodeJS using 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> 它也不起作用,我遇到了设置 headers 问题。

如有任何帮助,我们将不胜感激。 使用的模板语言: http://handlebarsjs.com/

我不确定您是如何设置的,但是 res.render 本身是否在 for 循环中?如果是这样,将整个数据集传递给模板,并在模板本身中循环,如:

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

并且在模板中:

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

如果您有嵌套数据,您也可以有嵌套 {{#each}} 语句。