Node JS Express更新问题



我在我的快递应用程序中实现更新时遇到了问题。http://localhost:3000/update2?pureerID = 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>

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

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

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

最新更新