【问题标题】:Node JS Express - updating documentsNode JS Express - 更新文档
【发布时间】:2016-12-12 20:34:01
【问题描述】:

我通过http://localhost:3000/update2?buyerID=2299 实现了检索,它获取了特定的文档。

当我按下提交时,它会重定向到 /orders 页面,从中我可以查看所有记录和当前字段。

如果我更改检索中的一个字段并单击提交它不会更新文档它与以前相同。

5 个 JSON 文档中的 1 个 - http://prntscr.com/dilrb0

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', {qs: result});
                    }
                })
            }
        });
    }
});

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")
                    }
                })

            }
        });
    }
});

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>

【问题讨论】:

  • 我实际上很困惑,因为您在.post() 的开头仍然使用req.query.buyerID 而不是req.body.buyerID,但代码显然仍然达到res.redirect("/orders"); 对于初学者,在您的 updateOne 中,尝试将 parseInt(buyerID) 替换为 parseInt(order.buyerID)

标签: javascript node.js express ejs


【解决方案1】:

实际上,您在 .post() 开头仍然使用 req.query.buyerID 而不是 req.body.buyerID 但代码显然仍然到达 res.redirect( “/订单”);首先,在您的 updateOne 中,尝试用 parseInt(order.buyerID) 替换 parseInt(buyerID) – Chris G 10 小时前

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 2017-01-02
    相关资源
    最近更新 更多