【问题标题】:How to send mysql queries sequentially using express in Node.js如何在 Node.js 中使用 express 顺序发送 mysql 查询
【发布时间】:2022-06-15 22:41:28
【问题描述】:

我编写了以下代码,其中我有一个执行 2 个查询和一些其他操作的发布请求:

router.post('/', (req, res) => {
    dbController.query(
        "SELECT * FROM users WHERE username = myUserName",
        (err, result) => {
            console.log('<---- 1 ---->')
        }
    )
    // do something
    console.log('<---- 2 ---->')
    // do something
    dbController.query(
        "SELECT * FROM users WHERE username = myUserName",
        (err, result) => {
            console.log('<---- 3 ---->')
    })
    res.send('ok')
})

我想按顺序执行函数内的所有指令,所以不要得到这个输出(这是我执行代码后得到的那个):

<---- 2 ---->
<---- 1 ---->
<---- 3 ---->

我想要这个:

<---- 1 ---->
<---- 2 ---->
<---- 3 ---->

请注意,将关键字 async 添加到函数并将 await 添加到查询后,没有任何变化

【问题讨论】:

    标签: mysql node.js express async-await


    【解决方案1】:

    您需要将逻辑包装在 .then() 您的代码应如下所示:

    router.post('/', (req, res) => {
        dbController.query(
            "SELECT * FROM users WHERE username = myUserName",
            (err, result) => {
                console.log('<---- 1 ---->')
            }
        ). then(async function(rows){
    // do something
        console.log('<---- 2 ---->')
        // do something
    })
    dbController.query(
            "SELECT * FROM users WHERE username = myUserName",
            (err, result) => {
                console.log('<---- 3 ---->')
        })
        res.send('ok')
    })
    

    您可能还需要将第二个查询包装在 .then()

    【讨论】:

      猜你喜欢
      • 2013-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多