res.redirect() 与 res.render() 在 mongoose 中保存数据条目后有何不同,尽管两者具有相同的代码?
How res.redirect() is different than res.render() after saving a data entry in mongoose despite both are having same code?
我有一个 HTML 表单,其中使用 express 和 mongoose 将数据提交给 mongoDB。向 mongoDB 提交数据后,客户端会显示包含所有记录的 table
这是通过重定向到显示所有记录的新页面来完成的。
两种方式相似,但稍后不显示最后(当前)条目。
方式 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() 的情况下执行同样的代码时如何表现异常?
在您的第二个版本中,您无需等待 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});
});
});
我有一个 HTML 表单,其中使用 express 和 mongoose 将数据提交给 mongoDB。向 mongoDB 提交数据后,客户端会显示包含所有记录的 table 这是通过重定向到显示所有记录的新页面来完成的。
两种方式相似,但稍后不显示最后(当前)条目。
方式 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() 的情况下执行同样的代码时如何表现异常?
在您的第二个版本中,您无需等待 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});
});
});