簡體   English   中英

如何訪問本地 scope 中的全局變量?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM