如何使用node.js中的ES6原生承诺调用查询?以下是代码。在node.js中使用ES6承诺返回空响应
let arr= [];
conn.query('select * from table1', (err, b) => {
for (let i = 0; i < b.length; i++) {
console.log(b[i]["id"])
let promiseGetData = new Promise((resolve, reject) => {
conn.query('select * from table2 where id = ?', [b[i]["id"]], (err, ce) => {
if (err) {
const response = {
statusCode: 500,
body: JSON.stringify({
message: err
}),
}
reject(response);
} else {
if (ce.length != 0) {
resolve(ce);
}
}
});
});
promiseGetData .then((data) => {
b[i]['data'] = data;
arr.push(b[i])
}).catch((err) => {
console.log(err);
});
}
console.log(b)
})
我看到一个空的响应,当我做console.log(b)。我不知道我是否以正确的方式使用了承诺,我认为对于第一次查询,我也应该在承诺中执行。任何帮助都非常感谢
您是否考虑过ce.length == 0并且没有错误的情况? –
@GrantPark是的,我已经检查没有错误,实际上我已经在第二个查询之前放置了console.log,之后我可以看到一个日志但没有查询数据,但是我仍然会再次检查该情况。 length == 0 –
在这种情况下,还要在第二个查询中放置一个console.log,看看是否运行。 –