首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flash messages handlebars

Flash messages handlebars
EN

Stack Overflow用户
提问于 2021-09-02 08:15:16
回答 1查看 45关注 0票数 0

如何在车把中打印闪光信息。比如,如果用户输入了错误的登录信息,我想打印出一条帮助消息给他们。

路由:

代码语言:javascript
复制
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一样。

我尝试了这样的东西:

代码语言:javascript
复制
    {{#if error}}
    {{error}}
    {{/if}}

App.js

代码语言:javascript
复制
//Express session 
app.use(session({
    secret: process.env.SESSION_SECRET,
    saveUninitialized: true,
    resave: true
}));

//Flash
app.use(flash());

//Routes
app.use('/', require('./routes/index'))
EN

回答 1

Stack Overflow用户

发布于 2021-09-06 02:54:57

为了呈现保存到闪存中的值,您需要使用与保存值相同的键req.flash('error')调用req.flash来从闪存中检索该值。然后,您需要将返回值分配给在/路径的GET处理程序中传递给render调用的数据对象的一个成员-因为这是您在调用res.redirect('/')时将用户重定向到的路径。

/的GET句柄可能如下所示:

代码语言:javascript
复制
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中一样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69026536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档