如何在车把中打印闪光信息。比如,如果用户输入了错误的登录信息,我想打印出一条帮助消息给他们。
路由:
router.post('/register-user', async (req, res, next) => {
let newUser = req.body
try {
if (await userCheck.userCheck(newUser)) {
const userExists = await User.exists({ username: req.body.username })
if (userExists) {
req.session.email = req.body.username;
res.redirect('/apikey')
console.log("User exists")
} else {
try {
req.session.email = req.body.username;
await userFacade.addUser(newUser)
console.log("New user")
res.redirect('/apikey')
} catch (err) {
console.log(err)
}
}
} else {
req.flash("error", "Something went wrong during login, please try again.");
res.redirect('/')
}
} catch (error) {
console.log(error)
}
})我有一个闪光信息“错误”,但我如何显示在页面上,只有当它设置?就像你在React中使用useStates一样。
我尝试了这样的东西:
{{#if error}}
{{error}}
{{/if}}App.js
//Express session
app.use(session({
secret: process.env.SESSION_SECRET,
saveUninitialized: true,
resave: true
}));
//Flash
app.use(flash());
//Routes
app.use('/', require('./routes/index'))发布于 2021-09-06 02:54:57
为了呈现保存到闪存中的值,您需要使用与保存值相同的键req.flash('error')调用req.flash来从闪存中检索该值。然后,您需要将返回值分配给在/路径的GET处理程序中传递给render调用的数据对象的一个成员-因为这是您在调用res.redirect('/')时将用户重定向到的路径。
/的GET句柄可能如下所示:
app.get('/', (req, res) => {
res.render('index', { error: req.flash('error') });
});注意:调用req.flash('error')的结果是一个数组。您的模板可以工作,因为Handlebar将数组值串化,但是当error是一个只有一个元素的数组时,{{#each error}}{{this}}{{/each}}将产生相同的结果。如果error有多个元素,模板中的{{error}}将打印所有用逗号连接的元素,就像在error 1,error 2,error 3中一样。
https://stackoverflow.com/questions/69026536
复制相似问题