==> 这是我的数据库模型代码
getByObjId = async (objId, callBack) => {
con.query(
`SELECT * FROM ${table} WHERE objective_id = ?`,
[objId],
async (err, res) => {
if (err) {
callBack(null, err);
} else {
callBack(null, res);
}
}
);
};
==> 这里的目标 id 我通过如下循环(在控制器中)
exports.getObjByEmpId = async (req, res, next) => {
const { emp_id } = req.payload;
const params = { emp_id: emp_id };
Objective.getBy(params, async (err, result) => {
if (err) {
return next(new erroResponse("Something went wrong", 500));
} else {
if (result.length > 0) {
// I want to modify this result array and add the key risk in it and send it to next
result.map((data) => {
//calling databse model to get data for each data.id
risk.getByObjId(data.id, (err, row) => {
if (err) {
return err;
} else {
data.risk = row;
}
});
});
// Loop over
// The below code is executed first before result array is modified
//setTimeout(() => {
let tempArr = [];
let newArray = [];
for (let data of result) {
let getStatus = data.objective_status.toLowerCase();
let isExist = tempArr.includes(getStatus);
if (!isExist) {
tempArr.push(getStatus);
newArray.push({
[getStatus]: [data],
});
} else {
for (const newArrData of newArray) {
let currKey = Object.keys(newArrData);
if (currKey[0] === getStatus) {
for (const key in newArrData) {
newArrData[currKey[0]].push(data);
}
}
}
}
}
res.status(200).json(newArray);
// }, 1000);
} else {
return next(new erroResponse("No objectives found", 404));
}
}
});
};
最后,我想在数据数组中添加一个风险键,其中 id 传递给数据库模型并从数据库中获取数据,当数据到来时,我想将该数据添加到 data.risk = data 但在此之前以下代码完整执行
然而,控制器代码与 setTimeout 函数一起工作正常,但这不是一个正确的概念
请帮忙