在Nodejs路由中执行多个查询

问题描述 投票:0回答:1

我有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
});

所有执行表操作(即删除,插入等)的查询都可以正常工作。进入选择查询后,我会收到所需的数据,但是我需要继续进行下一步,否则将不会发生。我知道我可以通过将步骤4嵌套在步骤3中来完成所需的工作,但是我想知道是否有其他方法可以做到这一点。

mysql node.js post async-await
1个回答
0
投票

您遇到的问题是注释//步骤4立即执行,而async(err代码在执行查询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);
}

});
© www.soinside.com 2019 - 2024. All rights reserved.