Javascript req.user.roles=未定义?

Javascript req.user.roles=未定义?,javascript,Javascript,代码: function isAdmin(req, res, next) { if(req.isAuthenticated()) { console.log(req.user); console.log(req.user.roles); next(); } else { res.redirect('/login'); } } { _id: 5bdf8d3bad3c971860134f6e, username: 'mark-rodgers',

代码:

function isAdmin(req, res, next) {
  if(req.isAuthenticated()) {
    console.log(req.user);
    console.log(req.user.roles);
    next();
  } else {
    res.redirect('/login');
  }
}
{
  _id: 5bdf8d3bad3c971860134f6e,
  username: 'mark-rodgers',
  password: 'HASHCENSORED',
  display_name: 'Mark Rodgers',    
  email: 'test@test.com',
  created: 2018-11-05T00:22:19.126Z,
  roles: [ 'admin' ],
  __v: 0
}

undefined
输出:

function isAdmin(req, res, next) {
  if(req.isAuthenticated()) {
    console.log(req.user);
    console.log(req.user.roles);
    next();
  } else {
    res.redirect('/login');
  }
}
{
  _id: 5bdf8d3bad3c971860134f6e,
  username: 'mark-rodgers',
  password: 'HASHCENSORED',
  display_name: 'Mark Rodgers',    
  email: 'test@test.com',
  created: 2018-11-05T00:22:19.126Z,
  roles: [ 'admin' ],
  __v: 0
}

undefined
我很困惑。有人能解释一下吗?当我
console.log(req.user)
时,我可以清楚地看到有一个名为roles的属性,它包含一个数组。但是我一辈子都无法访问该数组来检查用户是否是管理员?req.user.username、.password、.display_name等都正确返回,但记录req.user.roles返回未定义


我的目标是检查数组中是否存在“admin”:req.user.roles。。。我不知道为什么这很重要,但我没有将“角色”字段添加到我的用户模型中。因此,我猜即使数据在req.user中可见,也无法访问模型中未预定义的字段。。非常有趣。如果有人有一个额外的解释为什么这将是伟大的


req.user
是您的用户模型的一个实例,根据您以前的定义,它没有roles属性,但DB这样做了,它返回了它,因此数据就在那里,您无法访问它。在mongoose模型本身上调用console.log只会返回数据库返回的数据,这就是为什么
角色
显示在控制台中的原因。@dotconnor是否有一种方法可以打印出模型,而不是使用console.log进行调试,如果我忘记了,我可以使用它来防止将来出现这种情况?您可以尝试查看
对象()
toJSON()
方法,但除此之外,我不确定