首页 > 解决方案 > 无法使用 NodeJs + Express 服务器上的把手在索引上显示数组

问题描述

我在使用车把时遇到了一个我无法解决的问题,今天是第二天试图解决它,但我真的被卡住了。

我第一次尝试使用把手,因为我想让我正在处理的网页更有活力。

在我的服务器上,我有一个 mongoDB,有这个搜索按钮,用户可以在其中输入他们想要的任何内容,并且他们必须从任何匹配的用户那里获取用户信息。

该查询的响应如下:

_id: 5e2201a99162aa0344ed4261,
userName: 'Example',
email: 'example@example.io',
age: '23'

我正在尝试做的是获取该数据并将其显示在用户 dom 的 div 上,但由于某种原因我无法做到这一点。

在节点服务器上的 index.js 文件中,我得到了这个函数:

const printSearch = user => {
  console.log(user);
  res.render("main", {
    layout: "index",
    users: user
  });
};

此函数是执行查询的回调函数,我知道在此函数上,用户在内部拥有该查询的结果,因为console.log(user);.

然后在 main.hbs 我有以下代码:

<div id="result">
  {{#if users}}
    {{#each users}}
      <p>{{users.userName}}</p>
      <p>{{users.email}}</p>
      <p>{{users.age}}</p>
    {{/each}}
  {{/if}}
</div>

但是由于某种原因不起作用,正如我之前所说,这是我第一次使用车把,所以我想我缺少一些东西,但我无法弄清楚。

在这里提供一点帮助真的很有帮助,我会很高兴的。

提前谢谢大家!

标签: arraysnode.jsexpresshandlebars.jsexpress-handlebars

解决方案


要访问当前迭代值,请不要使用{{users.<property>}},只需:{{property}}。如果users是一个数组,请执行以下操作:

{{#each users}}
      <p>{{userName}}</p>
      <p>{{email}}</p>
      <p>{{age}}</p>
{{/each}}

否则,如果users是单个对象,您可以丢弃{{#each}}

<p>{{users.userName}}</p>
<p>{{users.email}}</p>
<p>{{users.age}}</p>

推荐阅读