Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在Nodejs路由中执行多个查询_Mysql_Node.js_Post_Async Await - Fatal编程技术网

Mysql 在Nodejs路由中执行多个查询

Mysql 在Nodejs路由中执行多个查询,mysql,node.js,post,async-await,Mysql,Node.js,Post,Async Await,我有Node.js post route,在其中我使用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"; awa

我有Node.js post route,在其中我使用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
});
所有执行表操作(即删除、插入等)的查询都可以正常工作。一旦进入select查询,我就会收到所需的数据,但我需要继续进行下一步,而这一步不会发生。
我知道我可以通过在步骤3中嵌套步骤4来完成我需要的任务,但我想知道是否有其他方法可以做到这一点。

您遇到的问题是注释//步骤4立即执行,而异步(执行查询3时,会异步执行错误代码。以下是为获得结果而更正的代码:

router.post("/foo", async (req, res) => {
try {
  const qr1 = "str1";
  await db.query(qr1); // Works fine
  const qr2 = "str2";
  await db.query(qr2); // Works fine
  const qr3 = "str3";
  const q3Result = await db.query(qr3);
  console.log('step 4');
  // step 4 – Should work fine
}
catch(err) {
  console.log(err);
}

});

当您发送回响应时,请求/响应周期结束。您确定在函数中没有调用res.send()或类似的东西吗。@khan我检查过了。我不相信我会这样做。您使用什么来查询数据库?例如,您确定您的库的
db.query
返回承诺吗?@StockOverlaw。只需一个简单的MySQL select查询