[英]How do i access the global variable in local scope?
我無法訪問 sql.query 塊中的全局 req_no 和 request_id 變量。 因此,第二個查詢正在發送 req_no 和 request_id 的空值。
我想獲取 request_id,生成 req_no 並將 req_no 更新回數據庫。 我如何實現這整個設置?
router.route("/new").post((req, res) => {
console.log(req.body);
const request_zone = req.body.request_zone;
const request_type = req.body.request_type;
const requester_type = req.body.requester_type;
const new_shipping_point = req.body.new_shipping_point;
const request_flow = req.body.request_flow;
const sales_order = req.body.sales_order;
const old_value = req.body.old_value;
const new_value = req.body.new_value;
const requester_email = req.body.requester_email;
const quotation = req.body.quotation;
const request_reason = req.body.request_reason;
const request_status = 1;
const creation_date = null;
const updation_date = null;
const bot_status = "";
const bot_comments = "";
var req_no = "";
const StatusFlag = 1;
var request_id = "";
const additional_notification_to = "";
const additional_information = "";
const approver = "";
sqQuery =
"insert into Request_Details " +
"OUTPUT inserted.[Request_id] "+
"values('" +
req_no +
"'," +
request_zone +
"," +
request_type +
"," +
requester_type +
"," +
request_flow +
",'" +
sales_order +
"','" +
requester_email +
"','" +
quotation +
"'," +
request_reason +
"," +
request_status +
"," +
creation_date +
"," +
updation_date +
"," +
StatusFlag +
",'" +
bot_status +
"','" +
bot_comments +
"','"+
additional_notification_to +
"','"+
additional_information +
"','"+
approver+
"')";
console.log(sqQuery);
sql.query(connectionString, sqQuery, (err, rows) => {
if (err != null) {
console.log(err);
} else {
// console.log(rows);
// console.log("DB Connected");
request_id = rows[0].Request_id
req_no = "REQ000" + request_id;
console.log(rows);
res.json("Data successfully added in Request Details Table");
console.log(request_id);
console.log(req_no);
}
});
sqQuery=
"update Request_Details set req_no='"+
req_no +
"' where request_id = " +
request_id;
console.log(sqQuery);
sql.query(connectionString, sqQuery, (err, rows) => {
if (err != null) {
console.log(err);
} else {
// console.log(rows);
// console.log("DB Connected");
console.log("request number"+ req_no +" updated");
res.json("Data successfully added in Request Details Table");
}
});
使用當前 sql 庫的最簡單方法是嵌套查詢:
router.route("/new").post((req, res) => {
....
sql.query(connectionString, sqQuery1, (err, rows1) => {
if (err) {
console.log(err);
res.sendStatus(500);
return;
}
// prepare second query here using results of first
sql.query(connectionString, sqQuery2, (err, rows2) => {
if (err) {
console.log(err);
res.sendStatus(500);
return;
}
// process second query results and build response
res.json(...);
});
});
});
這樣,第二個查詢在第一個查詢完成之前不會開始,並且可以使用其結果來准備第二個查詢。 此外,請注意您需要錯誤處理來記錄錯誤、發送錯誤響應並在每次查詢后停止進一步處理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.