【问题标题】:Server not sending array to hbs view服务器未将数组发送到 hbs 视图
【发布时间】:2018-03-14 19:45:01
【问题描述】:

我有一个 GET 路由监听如下:

app.get(("/employee/:id"), (req, res) => {
    data.getEmployeeByNum(req.params.id).then((data) => {
        res.render("employee", {employee: data});
    }).catch(function(reason) {
        res.render("employee", {message:"no results"});
    });
});

我的employee.hbs 视图如下从服务器等待,

<div class="row">
<div class="col-md-12">
    <h2>{{employee.firstName}} {{employee.lastName}} - Employee: {{employee.employeeNum}}</h2>
    <hr />
    <form method="post" action="/employee/update">
        <fieldset>
           ...                     ...                   ...

我已添加 console.log(data) 以确定并验证来自相应员工的正确数据是否得到呈现。即路径/employee/5正确返回,

[ { employeeNum: 5,
    firstName: 'Ysabel',
    lastName: 'Collyns',
    email: 'ycollyns4@myCompany.com',
    SSN: '930-71-9325',
    addressStreet: '529 Grim Lane',
    addresCity: 'New York',
    addressState: 'NY',
    addressPostal: '62205',
    maritalStatus: 'married',
    isManager: true,
    employeeManagerNum: null,
    status: 'Full Time',
    department: 6,
    hireDate: '4/18/2011' } ]

有什么想法吗?不知道我在这里缺少什么。而不是返回

&lt;h2&gt;Ysabel Collyns - Employee: 5&lt;/h2&gt;

返回

&lt;h2&gt; - Employee: &lt;/h2&gt;

【问题讨论】:

    标签: javascript node.js express handlebars.js


    【解决方案1】:

    尝试使用&lt;h2&gt;{{employee.0.firstName}} {{employee.0.lastName}} - Employee: {{employee.0.employeeNum}}&lt;/h2&gt;,因为对象在数组中。

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      问题出在我的一个模块函数中,

      正确的版本:

      module.exports.getEmployeeByNum = function(num) {
          return new Promise((resolve, reject) => {
              var temp = [];
              let j = 0;
              for (let i = 0; i < employees.length; i++) {
                  if (employees[i].employeeNum == num) {
                      temp[j] = employees[i];
                      j++;
                  }
              }
              if (temp.length == 0) {
                  reject("No results");
              } else {
                  resolve(temp[0]);
              }
          });
      }
      

      问题是我打电话给resolve(temp);而不是resolve(temp[0]);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-08-04
        • 2016-06-20
        • 2012-12-11
        • 1970-01-01
        • 1970-01-01
        • 2017-04-10
        • 2015-10-19
        相关资源
        最近更新 更多