【发布时间】:2022-01-10 23:45:38
【问题描述】:
我在将查询的最后一个元素推入数组时遇到问题。
- 程序应该循环遍历
testArray并在数据库中搜索对应的MedikamentId - 然后创建一个包含这些 ID 的数组。
这几乎可以正常工作,当前的输出如下所示:[3,2,3,2,3,2,3,2,3,2,3,2,3]
但是最后一个元素不见了,这个数组的末尾应该还有一个2(总共必须有14个元素)。
当我运行循环内注释的console.log(medIdArray) 时,我得到了正确的数组。
当我将medIdArray 放入.then() 处理程序时,为什么我的最后一项没有被退回?
let testArray = [
['Pantoprazol','Ibuprofen'],
['Pantoprazol','Ibuprofen'],
['Pantoprazol','Ibuprofen'],
['Pantoprazol','Ibuprofen'],
['Pantoprazol','Ibuprofen'],
['Pantoprazol','Ibuprofen'],
['Pantoprazol','Ibuprofen'],
];
let medIdArray = [];
let sqlGetMedId = "SELECT MedikamentId FROM Medikament WHERE Bezeichnung = ?";
let getMedId = new Promise((resolve, reject) => {
testArray.forEach((i, idx, array) => {
i.forEach((j) => {
mySqlConnection.query(sqlGetMedId, j, (err, rows, fields) => {
if (err) reject(err);
medIdArray.push(rows[0].MedikamentId);
//console.log(medIdArray);
if (idx === array.length-1) resolve();
})
})
})
})
getMedId.then(() => {
console.log(medIdArray);
})
getMedId.catch((err) => {
console.log(err);
})
【问题讨论】:
标签: mysql node.js asynchronous foreach promise