有没有一种方法可以使用第一个mysql查询的结果来使用NodeJ运行第二个查询

时间:2019-03-28 22:32:13

标签: node.js express

我有两个要运行的mysql查询。我只能基于从第一个查询收到的结果来运行第二个查询。 我的问题是我不知道如何将结果作为参数传递给第二个查询


router.post('/member/add', (req, res)=>{
        let ins_company = req.body.ins_company
        let firstname = req.body.firstname
        let othernames = req.body.othernames
        let surname = req.body.surname
        let member_no = req.body.new_member_no
        let status = req.body.card_status
        let card_pin = req.body.card_pin
        let join_date = req.body.join_date_now
        let date_of_birth = req.body.dateofbirth
        let sex = req.body.patient_sex
        let telephone_no = req.body.tel
        let nationality = req.body.patient_nationality
        let employer = req.body.employer
        let employer_id = req.body.employer_id
        let health_plan = req.body.health_plan
        let email = req.body.email
        let relationship = req.body.relationship
        let picpath = req.body.filepath0
        let member_type = req.body.member_type
        let rx_member_id = req.body.rx_member_id
        let member_plan_id = 'SLB Medical Plan'

        let result

        result = db.query("SELECT * FROM company_plan WHERE PlanID = ?",[member_plan_id],(err,row,fields)=>{
            if(err){
                console.log("Some errors "+ err)
                res.end()
                return
            }

            res.end()
                return
            let member_plan = row[0].Plan

            const queryString = "INSERT INTO patient_info_registration(ins_company,member_plan,surname,firstname) VALUES(?,?,?,?)"
            db.query(queryString, [
                ins_company,
                member_plan,
                surname,
                firstname
            ], (err,row,fields)=>{
            if(err){
                console.log("Some errors "+ err)
                res.end()
                return
            }
            res.json(row);
        })


        })
        })




    })

    module.exports = router

我希望能够将member_plan = row [0]变量传递给下一个查询。

1 个答案:

答案 0 :(得分:0)

您只需从以下位置删除return语句和res.end()即可:

 res.end()
                return
            let member_plan = row[0].Plan

并将member_plan的值传递给第二个查询,因为该查询在您的第一个回调函数中。

但是,我建议您创建一些函数来澄清代码,而不要在同一地方做所有事情。 您也可以使用Promise或Async / Await代替回调,这对于编写干净的代码和避免“回调地狱”更好。

此外,您可以使用解构从req.body获取所有数据,如下所示:

let { health_plan, email, relationship, etc... } = req.body;

此操作将创建所有具有req.body。{variableName}值的变量。