我试图在 Node.JS 中顺序执行 2 个 MySQL 查询。 MySQL 查询本身可以正常工作。 我想用 async/await 函数来完成它,以确保在更新之前插入记录。 这是代码:
router.post('/assign_new_item_id', async (req, res) => {
.....
try {
let qr1= "INSERT INTO foo1 ........;"
await pool.query( qr1, (err) => {
if (err) throw err;
});
let qr2= "UPDATE foo1 .....;"
await pool.query( qr2, (err) => {
if (err) throw err;
});
}catch(err){
console.log(err)
}
执行似乎在第一个 await block 中“挂起”。确保两个查询都相应执行的最佳方法是什么。 在此先感谢您的帮助。
最佳答案
要await
,你需要一个Promise,而不是Callback。在您的情况下,您没有返回等待的 promise 。
router.post('/assign_new_item_id', async (req, res) => {
// .....
try {
let qr1 = "INSERT INTO foo1 ........;"
await new Promise((res, rej) => {
pool.query(qr1, (err, row) => {
if (err) return rej(err);
res(row);
});
});
let qr2 = "UPDATE foo1 .....;"
await new Promise((res, rej) => {
pool.query(qr2, (err, row) => {
if (err) return rej(err);
res(row);
});
});
} catch (err) {
console.log(err)
}
});
我在这里 promise pool.query
方法并返回 promise 。
关于mysql - Nodejs 异步/等待 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56807314/