我有一個 HTML 表單,其中使用 express 和 mongoose 將資料提交到 mongoDB。向 mongoDB 提交資料后,客戶端會顯示包含所有記錄的表,這是通過重定向到顯示所有記錄的新頁面來完成的。
兩種方式都相似,但稍后不顯示最后(當前)條目。
方式1(作業得很好):
app.post("/", (res, req) => {
const item = new Item(req.body);
item.save();
res.redirect("/results");
});
app.get("/results", (res, req) => {
Item.find({}, (err, foundResult) => {
res.render("table.html", {data:foundResult});
});
});
方式2(不顯示最新條目):
app.post("/", (res, req) => {
const item = new Item(req.body);
item.save();
Item.find({}, (err, foundResult) => {
res.render("table.html", {data:foundResult});
});
});
方式 2 顯示資料庫中除當前條目之外的所有資料。
代碼在通過 res.redirect() 時如何表現正常,而在沒有 res.redirect() 的情況下執行相同的代碼時如何表現例外?
uj5u.com熱心網友回復:
在您的第二個版本中,您無需等待item.save()完成,然后立即執行Item.find({}),因此它可能尚未完成并且不包含在您的即時查詢中。
您可以這樣做來等待item.save()完成,但也可以記錄和處理錯誤:
app.post("/", (res, req) => {
const item = new Item(req.body);
item.save((err) => {
if (err) {
console.log(err);
return res.sendStatus(500);
}
Item.find({}, (err, foundResult) => {
if (err) {
console.log(err);
return res.sendStatus(500):
}
res.render("table.html", {data:foundResult});
});
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/468242.html
上一篇:如何在貓鼬中找到星級的平均值
