我创建了一个函数,它包含一组雇员。我需要找出mysql中不同表中每个雇员的教育细节,并将其附加到特定的employee对象。
employee对象如下所示:
employee: {
id: 1,
name: 'John'
}
下面是我写的函数:
const getEducationDetails = (employees, done) => {
var empArr = [];
employees.forEach(employee => {
empArr.push(employee);
employee.education = [];
const sql = `SELECT * FROM employee_education_details
WHERE employee_id = "${employee.id}"`
db.query(sql, (err, educationDetails, fields) => {
employee.education.push(educationDetails);
});
});
return done(empArr);
}
因此,我创建了一个定制的emparr数组,并将每个employee对象推入其中。为了存储教育细节,我创建了employee['education']。这个问题是由于nodejs的非阻塞i/o技术引起的。
node并不等待mysql查询完成,因此甚至在将教育细节插入其中之前就返回emparr。
我正在想办法解决这个问题。
1条答案
按热度按时间owfi6suc1#
你可能想用
Promises
. 你可以使用promises
如下所示: