У меня есть прослушивание маршрута 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.info(data), чтобы удостовериться, что отображаются правильные данные от соответствующего сотрудника. Т.е. путь /employee/5 правильно возвращает,
[ { employeeNum: 5,
firstName: 'Ysabel',
lastName: 'Collyns',
email: '[email protected]',
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' } ]
Есть предположения? Не уверен, что мне здесь не хватает. Вместо того, чтобы вернуться
<h2>Ysabel Collyns - Employee: 5</h2>
Он возвращается
<h2> - Employee: </h2>



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Попробуйте использовать <h2>{{employee.0.firstName}} {{employee.0.lastName}} - Employee: {{employee.0.employeeNum}}</h2>, поскольку объект находится в массиве.
Надеюсь это поможет.
Проблема была в одной из моих функций модуля,
Правильная версия:
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]);.