【问题标题】:Node JS Express update issuesNode JS Express 更新问题
【发布时间】:2016-12-13 03:39:55
【问题描述】:

我在我的 express 应用程序中实现更新时遇到问题。 http://localhost:3000/update2?buyerID=2299 当我输入上面显示的链接时,它会将我带到一个表格,但它是空的...... 我希望在此表单中填充与买家 ID 文档相关的当前值。

谁能看出我哪里出错了?

谢谢

json 文件

http://prntscr.com/dil1fj

js 文件

router.get('/update2', function(req, res) {
    var buyerID = req.query.buyerID;

    if (!buyerID || !parseInt(buyerID)) {
        res.render('error', {message: "You need to enter an ID to update a specific order", error:{status:"", stack: ""}});
    } else {

        mongoClient.connect(url, function (err, db) {
            if (err) {
                res.render('error', {message: "Failed to connect to MongoDB",error:{status:"", stack: ""}});
            } else {
                var WishList = db.collection('orders');
                WishList.findOne({"buyerID": parseInt(buyerID)}, function(err, result) {
                    if (err || !result || result.length == 0) {
                        res.render('error', {message: "Failed to find order",error:{status:"", stack: ""}});
                    } else {
                        res.render('updateOrder2', {updateOrder2: result, qs: req.query});
                    }
                })
            }
        });
    }
});

router.post('/update2', function(req, res) {
    var buyerID = req.query.buyerID;

    if (!buyerID || !parseInt(buyerID)) {
        res.render('error', {message: "Failed to update order make sure the ID is current", error:{status:"", stack: ""}});
    } else {

        mongoClient.connect(url, function (err, db) {
            if (err) {
                res.render('error', {message: "Failed to connect to MongoDB", error:{status:"", stack: ""}});
            } else {
                var WishList = db.collection('orders');

                var order = {
                    buyerID: req.body.buyerID,
                    gender: req.body.gender,
                    student: req.body.student,
                    pName: req.body.pName,
                    type: req.body.type,
                    purchaseDate: req.body.purchaseDate,
                    price: req.body.price,
                    sName: req.body.sName

                };
                console.log("Updating..", order)
                WishList.updateOne({"buyerID": parseInt(buyerID)}, {$set: order}, function (err, result){
                    if (err) {
                        console.log("Cannot update", err)
                    } else {
                        console.log("Updated..", order)
                        res.redirect("/orders")
                    }
                })

            }
        });
    }
});

updateOrder2.ejs

<!DOCTYPE html>
<html>
<head>
    <title>Update Recipe</title>
    <link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>

<form name= "updateOrder" action="/updateOrder" method="POST">
    User ID:<br>
    <input type="text" name="buyerID" value = <%=qs.buyerID%>/ required ="required"><br>
    Gender:<br>
    <input type="text" name="gender" value = <%=qs.gender%>/ required ="required"><br>
    Student?:<br>
    <input type="text" name="student" value = <%=qs.student%>/ required ="required"><br>
    Product ID:<br>
    <input type="text" name="productID" value = <%=qs.productID%>/ required ="required"><br>
    Product Name:<br>
    <input type="text" name="pName" value = <%=qs.pName%>/ required ="required"><br>
    Product Type:<br>
    <input type="text" name="type" value = <%=qs.type%>/ required ="required"><br>
    Date Purchased:<br>
    <input type="text" name="purchaseDate" value = <%=qs.purchaseDate%>/ required ="required"><br>
    Product Price:<br>
    <input type="text" name="price" value = <%=qs.price%>/ required ="required"><br>
    Seller Name:<br>
    <input type="text" name="sName" value = <%=qs.sName%>/ required ="required"><br>
    <br><br>



    <input type="submit" value="Submit" />
</form>


</body>
</html>

【问题讨论】:

  • 当您在浏览器中查看空表单的源代码时,您会看到什么?您是否在节点控制台中收到任何错误?
  • 我没有收到任何错误,我只想在表单中填充与该买家 ID 相关的数据
  • 我从未使用过 ejs,但我很确定您 a) 至少需要将包含空格的值放在引号中,并且 b) 删除斜杠。另外,您认为源代码是什么?它是否包含“值=”?如果是这样,那之后插入了什么?此外,您将 qs: req.query 传递给渲染器。你不应该通过qs: result吗?
  • qs:result 将数据加载到表单中!这部分现在可以工作了:D 让我们看看它是否真的更新了它
  • 它似乎没有用我传入的字段更新文档

标签: javascript node.js express ejs


【解决方案1】:

我从未使用过 ejs,但我很确定您 a) 至少需要将包含空格的值放在引号中,并且 b) 删除斜杠。另外,您认为源代码是什么?它是否包含“值=”?如果是这样,那之后插入了什么?此外,您将 qs: req.query 传递给渲染器。你不应该通过qs: result吗?

关于更新,我猜router.post('/update2'开头的var buyerID = req.query.buyerID;是问题所在;你需要使用req.body.buyerID。我建议在代码的关键行添加大量 console.log() 命令。

【讨论】:

  • 如果你能看看我最新的问题,我也能解决这个问题。
【解决方案2】:

我猜这个 var buyID = req.query.buyerID;在 router.post('/update2' 的开头是问题;您需要使用 req.body.buyerID。我建议在关键行的代码中添加大量 console.log() 命令。– Chris G 4 分钟前

【讨论】:

    猜你喜欢
    • 2020-11-12
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多