我正在阅读Express框架文档,进行基本的登录/重定向页面路由。以下路由接受提交:
app.post('/',function(req,res){
//console.log("USERNAME: "+req.body.username);
//console.log("PASSWORD: "+req.body.password);
res.redirect('/chat');
});
还有这个:
app.get('/chat', function(req, res){
res.sendFile(__dirname + '/templates/chat.html');
//console.log("request");
});
将用户带到一个新页面。如何发送上下文?我应该使用res.render()吗?这两个函数似乎都不包含{username:req.body.username}这样的数据选项。数据应该如何在路由之间传递?
发布于 2018-03-20 09:40:12
通常,要使用express处理登录,可以使用诸如passport's local strategy之类的东西,它为您的每个路由将一个用户对象附加到请求对象(req.user
)。我不知道您正在尝试的内容是否能在更大的上下文中工作--您至少需要某种基于会话的中间件,比如express-session,这样您就可以为每个会话附加变量(我认为它提供了req.session
)。默认情况下,express能够存储一个请求/响应周期(res.locals
)或整个应用实例(即所有用户)的信息(app.locals
)。
至于将数据放入视图中,您可以将res.render
与EJS、pug或其他视图引擎一起使用。例如,如果在您的路由中,您具有以下内容:
route.get('/', (req, res) => {
res.render('template', { username: 'yourname' })
}
你可以像这样在你的ejs模板中引用它:
<h1>Hello, <%= username %>!</h1>
它将以如下形式返回:
<h1>Hello, yourname!</h1>
所以,为了回答你的问题:
res.render
将变量和数据放入您的视图中app.locals
希望这能有所帮助!祝你快递好运!
https://stackoverflow.com/questions/49374988
复制相似问题