【发布时间】:2013-04-06 21:46:33
【问题描述】:
所以当他们登录我的 Node.js 应用程序时,我有一个用户存储在 session 中。我有管理员和默认用户,如果我在 Jade 模板中输出#{session.user.role},我会得到default 或admin 出现。在我的页面上进行测试时,如果没有人登录,我可以使用 -if(session.user) 隐藏页面上的项目以隐藏项目,但是如何为非管理员用户隐藏项目?
我尝试输入-if(session.user.role === 'default'),但我收到错误消息Cannot read property 'role' of undefined。所以这行不通,任何人有关于如何做到这一点的想法吗?
这是使用 Mongoose 的用户架构:
var User = new Schema({
'key' : {
unique : true,
type : Number,
default: getId
},
'username' : { type : String,
validate : [validatePresenceOf, 'a Username is required'],
set : toLower,
index : { unique : true }
},
'password' : String,
'role' : String,
});
【问题讨论】:
-
你说
session.user.role输出默认或管理员,所以它必须存在。您确定未定义错误不仅发生在未登录的用户身上吗?如果是这样,你可以写if(session.user && session.user.role === 'default')。
标签: javascript node.js mongoose pug