URL不会随res.ender()而改变 [英] URL does not change with res.render()

查看:18
本文介绍了URL不会随res.ender()而改变的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在登录到ejs模板引擎后,从带有express js的服务器发送应用列表。为此,我使用res.render()。即使它呈现指定的文件,它也不会更改URL。我应该怎么做才能随数据一起重定向并更改URL。

routes.js

const loginUser = requie('../Controller/LoginController');
router.post('/login', loginUser);

LoginController.js

const loginUser = (req, res) => {
    /* login code */
   res.render('apps/app-list', {
     title: 'Application List',
     isLoggedIn: true
   });
};

登录成功后,正在呈现apps/app-list的内容,但url仍然是users/login

推荐答案

如果您尝试发送数据,则应该呈现一个页面,以下是我的应用程序中的一个示例:

app.get("/myfood", ensureAuthenticated, (req, res) => {
    Food.find({}, (error, allfood) => {
        if(error) {
            console.log(error)
        } else {
            res.render("myfood", {food: allfood})
        }
    })
})

所以我将所有找到的食品与GET请求一起发送。并且您可以发送多个对象。只需用逗号分隔它们。

正如我在评论中所说,如果您想这样做,您就不能这样做

res.redirect()

因此,在我的应用程序中,我想在用户注册时发送一条闪电消息。此处:

newUser.save()
  .then(user => {
       req.flash("sucess_msg", "Thank you for registering.")
       res.redirect("/login");
  })

您可以在YouTube上搜索一下如何使用req.flash()有几个很棒的教程。我是从布拉德·特拉弗西(Brad Traversy)那里了解到的,这是护照节点应用程序。

我只能给你这么多了。req.flash()在全局变量中定义

app.use((req, res, next) => {
    res.locals.sucess_msg = req.flash("sucess_msg");
    res.locals.error_msg = req.flash("error_msg");
    res.locals.error = req.flash("error");
    next();
});

试着做同样的事情,也许可以从那里开始。希望您能更近一步

这篇关于URL不会随res.ender()而改变的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆