#node.js #express
#node.js #выразить
Вопрос:
У меня есть два запроса 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. Было бы намного лучше использовать
INSERT ... SELECT
здесь в одном операторе, чтобы вы могли гарантировать, что все будет сделано в одной приятной транзакции автоматически.
Ответ №1:
Вы можете просто удалить оператор 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} внутри