【问题标题】:Posting fetched data in database在数据库中发布获取的数据
【发布时间】:2021-01-16 13:40:54
【问题描述】:

我正在尝试通过表单获取用户信息,然后在“订单”表中插入相同的数据。 一切看起来都正确,但有一个错误显示 total_cost 未定义。 我也尝试在全球范围内声明它。

total_cost 应该是用户在表单中选择的数量乘以从数据库中获取的产品价格。

这是 app.js 的发布请求:

    // post create_order page
app.post("/create_order", function(req, res){
    var name = req.body.name;
    var quantity = req.body.quantity;
    var email = req.body.email;

    // fetching price from menu table
    var sql = "select Price from menu where Name=?";
    db.query(sql,[name], function(err, result){
        if(err){
            throw err;
        }else if(result==0){
            console.log("No items found!!!")
        }else{
            console.log(result)
            console.log(Price)
            var total_cost = result;
            console.log(total_cost  )
        }
    })

    // Updating the order table
    let today = new Date().toISOString().slice(0, 10);
    let order = {
        Item : name,
        Quantity : quantity,
        TotalCost : total_cost,
        Date : today,
        email : user
    }
    sql1 = "Insert into orders SET ?";
    db.query(sql1, order, function(err, result2){
        if(err){
            throw err;
        }else{
            res.redirect("/orders");
        }
    })
})

这是用于获取数据的相应订单:

    <!-- //Order form goes here -->
  <div class="orderform"> 
    <form action="/create_order" method="POST">
      <div class="form-group">
        <label for="exampleFormControlSelect1">Select Item</label>
        <select class="form-control" name="name" id="exampleFormControlSelect1">
          <%result.forEach(function(result){%>
            <option><%=result.Name%></option>
          <%})%>
    
        </select>
      </div>
      <div class="form-group" >
        <label for="exampleFormControlInput1">quantity</label>
        <input type="number" name="quantity" class="form-control" id="exampleFormControlInput1" placeholder="quantity" min="1" max="10">
      </div>
      <div class="form-group">
        <label for="exampleFormControlInput1">Email address</label>
        <input type="email" name="email" class="form-control" id="exampleFormControlInput1" placeholder="name@example.com">
      </div>

错误页面截图: Error page I am getting upon submitting the form

【问题讨论】:

标签: html node.js


【解决方案1】:

您定义了变量内部范围;这会导致问题!

                let profile = 20;

                function call() {
                    console.log(profile); // == 20
                    let profile2 = 26;
                }
                call();
                console.log(profile2); // undefined in other words your error.

如果不是范围问题,那么肯定是您从数据库中获取的数据不正确。仔细检查查询。

【讨论】:

  • 假设您的 console.log 上有数据,AOK 可以传递那里没有问题或“未定义”错误;尝试在电子邮件下方定义您的 total_cost 变量。 var total_cost = 未定义;这应该给它像电子邮件一样的全局范围。
猜你喜欢
  • 2015-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 2017-08-02
相关资源
最近更新 更多