【问题标题】:nested mysql query get skipped in nodejs嵌套的mysql查询在nodejs中被跳过
【发布时间】:2022-01-02 14:54:02
【问题描述】:

我正在尝试创建一个“groupe”,然后将其创建者作为管理员插入到“groupemembers”表中,但是第二个查询被跳过了

router.post('/createGroupe/:userId', upload.single('file'), (req, res) => {
    let groupe = req.body
    // req.body containing the groupe title, description
    let userId = req.params.userId
    let groupeId
    groupe['image'] = req.file
    db.query('insert into groupes set ?', groupe, function(err, result){
        if (err) throw err;
        groupeId = result.insertId.toString()
        db.query("insert into groupemembers set ?", [groupeId, userId, 'admin'], function (err, result){
            console.log(groupeId)
            if (err) return err;
        })
        res.send(result.insertId.toString())
    })
})

【问题讨论】:

    标签: javascript mysql sql node.js express


    【解决方案1】:

    你需要学习回调风格甚至更好的异步/等待风格。更容易编码。

    但对于您的具体问题,我认为您想将 res.send 排成一行 因为这样你会在第二个查询执行后调用 res.send。

    router.post('/createGroupe/:userId', upload.single('file'), (req, res) => {
        let groupe = req.body
        // req.body containing the groupe title, description
        let userId = req.params.userId
        let groupeId
        groupe['image'] = req.file
        db.query('insert into groupes set ?', groupe, function(err, result){
            if (err) throw err;
            groupeId = result.insertId.toString()
            db.query("insert into groupemembers set ?", [groupeId, userId, 'admin'], function (err, result){
                console.log(groupeId)
                if (err) return err;
                res.send(result.insertId.toString())
            })
        })
    })
    
    

    【讨论】:

    • 谢谢,由于项目关系,我学习 Javascript 有点匆忙,但我会牢记您的建议,并尝试更深入地了解异步。
    猜你喜欢
    • 1970-01-01
    • 2019-05-05
    • 2014-08-26
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多