[英]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.