2016-12-12 9 views
0

Iveは、特定のドキュメントを取得するhttp://localhost:3000/update2?buyerID=2299で取得を取得しました。ノードJS Express - ドキュメントの更新

私がsubmitを押すと、/ ordersページにリダイレクトされ、そこからすべてのレコードと現在のフィールドを見ることができます。

私が検索のフィールドを1つ変更して送信すると、ドキュメントが更新されません。以前と同じです。

1 5 JSONのDocuments- http://prntscr.com/dilrb0

私は実際にあなたがまだ使用しているという事実によって混乱している

<!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> 
+0

私は実際にあなたが 'req.query.buyerID'あなたの '.post()'の先頭に 'req.body.buyerID'の代わりに' req.body.buyerID'の代わりに 'res.redirect("/orders "); parseInt(buyerID) 'と' parseInt(order.buyerID) 'を使用しています –

答えて

0

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 .post()の先頭にreq.body.buyerIDの代わりにreq.query.buyerIDがありますが、そのコードは明らかにまだres.redirect( "/ orders")に達しています。まず、updateOneで、parseInt(buyerID)をparseInt(order.buyerID)に置き換えてみてください。 - Chris G 10時間前

関連する問題