【问题标题】:Jade - Accessing a variable passed to itJade - 访问传递给它的变量
【发布时间】:2013-04-06 21:46:33
【问题描述】:

所以当他们登录我的 Node.js 应用程序时,我有一个用户存储在 session 中。我有管理员和默认用户,如果我在 Jade 模板中输出#{session.user.role},我会得到defaultadmin 出现。在我的页面上进行测试时,如果没有人登录,我可以使用 -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


【解决方案1】:
- if (typeof session.user != 'undefined' && session.user.role === 'default')

【讨论】:

  • 出于兴趣,您知道如何在 Node.js 应用程序的 express 路由中执行此操作吗?我正在路由到一个页面,但如果用户不是管理员,我想关闭对该页面的访问。如果用户是否是管理员,我现在只是使用控制台日志打印到控制台,但我收到 session is not defined 错误。
  • 感谢您的见解,您将如何检查默认用户或未注册的人?例如,如果用户设置为defaultadmin,则页面将加载,但如果没有用户登录,则错误为role is not defined,因为没有人登录
猜你喜欢
  • 1970-01-01
  • 2012-09-01
  • 2016-10-28
  • 2020-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-04
相关资源
最近更新 更多