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>
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) ' –