2016-12-12 4 views
0

Ive는 특정 문서를 가져 오는 http://localhost:3000/update2?buyerID=2299을 통해 검색을 수행했습니다.노드 JS Express - 문서 업데이트

제출을 누르면 모든 레코드와 현재 필드를 볼 수있는/orders 페이지로 리디렉션됩니다.

검색 필드를 하나 변경하고 제출을 클릭하면 문서가 업데이트되지 않습니다. 이전과 동일합니다.

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")에 도달했다는 것을 알았습니다.'처음에는 updateOne에서' 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 시간 전