如何在视图中访问已登录的用户对象?
How do I access the logged in user object in a view?
用户登录后,如何从视图内部引用 this.req.user
?
我认为这将涉及更新 Jade 中间件的本地集合。不过,我无法获得对此对象的引用。
到目前为止,我一直在做以下事情...
app.use(jade.middleware({
viewPath: __dirname + '/views',
debug: true,
pretty: true,
compileDebug: true,
locals: {
moment: require('moment'),
_: require('lodash')
}
}));
然后在视图中会有这样的东西...
span=moment(new Date(item.date)).calendar()
当然现在我有一个无法在设置时分配的用户对象。
在您的快速配置中,您需要在对用户进行身份验证后将用户对象存储在 res.locals 中,类似这样的工作:
app.use(function(req, res, next){
res.locals.user = req.user;
next();
});
那么您应该能够在您的 jade 模板中引用用户:
block content
p= user.email
您可以使用一些库,下面是您如何使用 co-views:
'use strict';
let koa = require('koa'),
views = require('co-views');
let app = koa();
let render = views(__dirname + '/jade/', {default: 'jade'});
app.use(function *controller(){
let data;
data = {
user: this.req.user
};
this.body = yield render('jadeFileName', data);
});
我制作了一个关于使用 Jade 从 Koa 提供内容的截屏视频,这可能会有帮助。您可以在以下位置找到它:
http://knowthen.com/episode-6-serving-content-in-koajs-with-jade/
编辑:
这里有一个选项可以响应您在调用渲染时不传递用户的愿望。
'use strict';
let koa = require('koa'),
views = require('co-views');
let app = koa();
let render = views(__dirname + '/jade/', {default: 'jade'});
// using custom middleware
app.use(function *(next){
this.render = function (fileName, data){
data = data || {};
data.user = this.req.user;
return render(fileName, data);
}
yield next;
});
app.use(function *controller(){
this.body = yield this.render('jadeFileName');
});
用户登录后,如何从视图内部引用 this.req.user
?
我认为这将涉及更新 Jade 中间件的本地集合。不过,我无法获得对此对象的引用。
到目前为止,我一直在做以下事情...
app.use(jade.middleware({
viewPath: __dirname + '/views',
debug: true,
pretty: true,
compileDebug: true,
locals: {
moment: require('moment'),
_: require('lodash')
}
}));
然后在视图中会有这样的东西...
span=moment(new Date(item.date)).calendar()
当然现在我有一个无法在设置时分配的用户对象。
在您的快速配置中,您需要在对用户进行身份验证后将用户对象存储在 res.locals 中,类似这样的工作:
app.use(function(req, res, next){
res.locals.user = req.user;
next();
});
那么您应该能够在您的 jade 模板中引用用户:
block content
p= user.email
您可以使用一些库,下面是您如何使用 co-views:
'use strict';
let koa = require('koa'),
views = require('co-views');
let app = koa();
let render = views(__dirname + '/jade/', {default: 'jade'});
app.use(function *controller(){
let data;
data = {
user: this.req.user
};
this.body = yield render('jadeFileName', data);
});
我制作了一个关于使用 Jade 从 Koa 提供内容的截屏视频,这可能会有帮助。您可以在以下位置找到它:
http://knowthen.com/episode-6-serving-content-in-koajs-with-jade/
编辑:
这里有一个选项可以响应您在调用渲染时不传递用户的愿望。
'use strict';
let koa = require('koa'),
views = require('co-views');
let app = koa();
let render = views(__dirname + '/jade/', {default: 'jade'});
// using custom middleware
app.use(function *(next){
this.render = function (fileName, data){
data = data || {};
data.user = this.req.user;
return render(fileName, data);
}
yield next;
});
app.use(function *controller(){
this.body = yield this.render('jadeFileName');
});