2016-12-12 2 views
0

Ich habe einen Abruf über http://localhost:3000/update2?buyerID=2299, die das bestimmte Dokument abrufen.Node JS Express - Aktualisieren von Dokumenten

Wenn ich submit drücke, wird auf die Seite/orders weitergeleitet, von wo aus ich alle Datensätze und dort aktuelle Felder anzeigen kann.

Wenn ich eine der Felder in abfragen ändern und klicken Sie auf Senden, es aktualisiert das Dokument nicht Es ist das gleiche wie zuvor.

1 von 5 JSON Dokumente- http://prntscr.com/dilrb0

JS-Datei

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

Ich bin eigentlich verwirrt durch die Tatsache, dass Sie immer 'req.query.buyerID' verwenden anstelle von 'req.body.buyerID' am Anfang von' .post() ', aber dass der Code scheinbar immer noch 'res.redirect ("/orders ") erreicht;' Für den Anfang, in Ihrem updateOne, versuchen Sie '' zu ersetzen parseInt (käuferID) 'mit' parseInt (order.buyerID) ' –

Antwort

0

ich durch die Tatsache, tatsächlich verwirrt bin, dass Sie immer noch verwenden req.query.buyerID anstelle von req.body.buyerID am Anfang von .post(), aber der Code erreicht anscheinend immer noch res.redirect ("/ orders"); Versuchen Sie in Ihrem updateOne, zuerst parseInt (buyerID) durch parseInt (order.buyerID) zu ersetzen - Chris G vor 10 Stunden