connect-flash
跨请求存储数据,需要一个 session。但如果不想将错误信息永久存储在 session 中,而是想在错误信息中添加一些别的信息,将其快速发送到 session 中。一旦我们使用了这个在 session 中的错误信息,这个错误信息将会从 session 中删除,这样对于后面的请求,session 中将不会存在这个错误信息。
flash 是在 session 中用于储存信息的特殊区域,在其中存储的值使用过一次便被清空。我们将消息入到 flash 中,跳转目标页中显示该消息。它常和redirect一起使用,用于一次性消息提示。
下载
npm install --save connect-flash
引入注册
app.js
const flash = require('connect-flash');
const app = express();
app.use(flash());
...
将信息存入 flash 中
通过req.flash('name', 'value')来向 falsh 中存入一条信息:
exports.postLogin = (req, res, next) => {
const email = req.body.email;
const password = req.body.password;
User.findOne({ email: email })
.then((user) => {
if (!user) {
req.flash("error", "Invalid email or password");
return res.redirect("/login");
}
})
.catch((err) => console.log(err));
};
获取 falsh 中的信息
通过req.flash('name')来获取设置的信息,并将它发送到页面:
exports.getLogin = (req, res, next) => {
let message = req.flash("error"); // 获取flash中存入的信息
if (message.length > 0) {
message = message[0];
} else {
message = null;
}
res.render("auth/login", {
path: "/login",
pageTitle: "Login",
errorMessage: message, // 发送到页面中
});
};