我显然没有得到一些核心的节点概念。从数据库验证用户后,数据库返回一个对象("pass_to_html")。我想将该对象的结果呈现到使用车把的新页面上。
我从login_handler.js(服务器js进行验证并从数据库中推送和拉取)的缩写代码:
function getTheeToDashboard(pass_to_html){
app.post('/dashboard',function(req,res, next){
res.redirect('/dashboard')
res.render('dashboard', {view: dashboard, trainer_name: pass_to_html.trainer_data.trainer});
})
}
从仪表板.js
router.get('/', function(req, res, next) {
res.render('dashboard')
});
从应用程序.js:
app.use('/dashboard', dashboard);
来自 dashboard.hbs:
<h1> Welcome {{trainer_name}}! </h1>
我没有收到任何错误,但显然 app.htmlVerb 没有参与。我已经尝试过app.get,app.put和 app.post。
**编辑:安装连接闪存后,这是我修改的设置,但仍然没有快乐。我认为该应用程序会重定向到dashbard页面并显示一条消息,但什么都没有。**
应用.js
var cookieParser = require('cookie-parser');
var session = require('express-session');
var flash = require('connect-flash-plus');
var app = express();
app.use(session({
secret: 'keyboard cat',
cookie: { maxAge: 60000 },
resave: false,
saveUninitialized: false
}));
app.use(flash());
登录处理程序:
function getTheeToDashboard(pass_to_html){
app.get('/flash',function(req,res){
req.flash('info','Flash is back!')
res.redirect('/dashboard')
})
}
仪表板.js:
router.get('/', function(req, res, next) {
res.render('dashboard',{messages: req.flash('info')})
});
不能在同一请求中同时重定向和呈现新页面。
重定向是对一个请求的响应,并告诉客户端发出另一个请求。
然后,客户端可以发出另一个请求,您向其发送另一个响应。这是一个两步过程。(如果要进行重定向。
您需要在重定向重定向到的目标路由的 GET 处理程序中向模板提供正确的数据,而不是在重定向从中重定向的源路由的 POST 处理程序中
。如果需要,您可以使用connect-flash
模块在这两个请求之间传递数据,但也可以在 secind 请求的处理程序中使用会话数据。
看:
- https://www.npmjs.com/package/connect-flash
- https://www.npmjs.com/package/connect-flash-plus
- https://www.npmjs.com/package/connect-flash-light
- https://www.npmjs.com/package/express-flash
- https://www.npmjs.com/package/connect-flash-redis
文档中有很好的例子。