我有两个要运行的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]变量传递给下一个查询。
答案 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}值的变量。