【发布时间】:2020-02-11 07:52:08
【问题描述】:
我有 Node.js 发布路由,我在其中使用 async/await 按顺序执行多个查询。
router.post("/foo", async (req, res) => {
const qr1 = "str1";
await db.query(qr1); // Works fine
const qr2 = "str2";
await db.query(qr2); // Works fine
const qr3 = "str3";
await db.query(qr3, async (err, result) => {
if (err) {
console.log(err);
}
if (result.length > 0) {
// Required data is received – That part works
// do something and continue to step 4
}
});
// step 4 – Never gets here
});
执行表操作(即删除、插入等)的所有查询都可以正常工作。一旦我到达一个选择查询,我就会收到所需的数据,但我需要继续下一步,这不会发生。 我知道我可以通过在第 3 步中嵌套第 4 步来完成我需要的工作,但我想知道是否有其他方法可以做到这一点。
【问题讨论】:
-
请求/响应周期在您发回响应时结束。你确定在函数内部你没有调用 res.send() 或类似的东西。
-
@khan 我查过了。我不相信我会这样做。
-
你用什么来查询数据库 - 即你确定你的 lib 的
db.query返回一个承诺吗? -
@StockOverflaw。只是一个简单的 MySQL 选择查询
标签: mysql node.js post async-await