gpt4 book ai didi

node.js - ExpressJS 3.0 如何将 res.locals 传递给 Jade View ?

转载 作者:IT老高 更新时间:2023-10-28 22:09:25 24 4
gpt4 key购买 nike

我想在用户登录失败后显示一条消息,但我无法让变量显示在我的 Jade View 中。

我有一些片段,我知道我必须在我的 app.configure() 中使用它:

    app.use (req, res, next) ->
res.locals.session = req.session

我会设置用户 POST 错误密码后的 flash 信息:

     exports.postSession = (req, res) ->
users = require '../DB/users'
users.authenticate(req.body.login, req.body.password, (user) ->
if(user)
req.session.user = user
res.redirect(req.body.redirect || '/')
else
req.session.flash = 'Authentication Failure!'
res.render('sessions/new', {title:'New', redirect: req.body.redirect })
)

我不知道如何访问我的 Jade 文件中的 res.locals.session。我怀疑我是否设置正确。这个问题很像这个问题:Migrating Express.js 2 to 3, specifically app.dynamicHelpers() to app.locals.use?但我仍然无法让它工作。如果有人能向我展示一个在 res.local 中设置值并在 View 中访问它们的简单示例,将不胜感激。

附言我确实知道 connect-flash,但我需要了解如何使内容在 View 中可用。

这是我的应用程序:

app.configure(() -> 
app.set('views', __dirname + '/views')
app.set('view engine', 'jade')
app.use(express.bodyParser())
app.engine('.jade', require('jade').__express)
app.use(express.methodOverride())
app.use(express.cookieParser())
app.use(express.session({ store: new express.session.MemoryStore({reapInterval: 50000 * 10}), secret: 'chubby bunny' }))
app.use(express.static(__dirname + '/public'))
app.use((req, res, next) ->
res.locals.session = req.session
next()
)
app.use(app.router)
)

最佳答案

只是给遇到相同问题的每个人做一个简短的总结,并认为更改 res.redirect 已解决。

把你的app.use中间件放在之前 app.router是很重要的。见 express 的作者 TJ Holowaychuck 的评论

这是一个使用全新安装 express v3.0.0rc4 的示例

app.js:

app.use(function(req, res, next){
res.locals.variable = "some content";
next();
})

app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
});

index.jade:

extends layout

block content
h1= title
p Welcome to #{title}
p= variable

关于node.js - ExpressJS 3.0 如何将 res.locals 传递给 Jade View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12550067/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com