gor*_*yef 3 mysql node.js async-await
我尝试在 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)
}
Run Code Online (Sandbox Code Playgroud)
执行似乎在第一个等待块内“挂起”。确保两个查询同时执行的最佳方法是什么?预先感谢您的任何帮助。
你需要的await是承诺,而不是回调。在您的情况下,您不会返回等待的承诺。
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)
}
});
Run Code Online (Sandbox Code Playgroud)
在这里我承诺了该pool.query方法并返回一个承诺。
| 归档时间: |
|
| 查看次数: |
4635 次 |
| 最近记录: |