req.user上的对象未定义(Node,Express)

时间:2016-10-31 17:50:25

标签: javascript arrays node.js express passport.js

我正在尝试在req.user对象上访问名为blockedUsers的数组,但是它返回未定义。 req.user上还有其他数组和键/值对,我可以毫无问题地访问它们。

如果我console.log(req.user);,我会得到以下内容:

{ _id: 57ebbdedf814b103c81e0b3d,

  // ... loads of other key:value pairs ...

  lastLogin: 1477934742883,
  __v: 0,
  blockedUsers: [ '57ebcca8f814b103c81e0b4f' ], // This is the one I want to access!
  comMethod: [ 'face to face', 'email', 'whatsapp', 'skype' ],
  photos: 
   [ '/uploads/1fb7f43df2eecafb01138230c6cd87351475067373516.jpeg',
     '/uploads/3398bcddd39be966e8300a8b9f252b181475067373518.jpeg' ] }

我可以访问任何其他属性,但不能阻止用户。

我已经尝试了JSON.stringify(req.user.blockedUsers);,但它仍然未定义。

当我在数据库中将对象添加到用户时,我也尝试了JSON.stringifying对象,我得到了相同的结果。

如果它有用,这里是我在数据库中向用户添加blockedUsers的代码:

app.post('/users/block', function(req,res){
  User.findByIdAndUpdate(
    req.body.blockingUser, // the id of the user doing the blocking
    {$push: {blockedUsers: req.body.blockedUserId}}, // the id of the user being blocked
    {upsert: true},
    // ... error handling and res.redirect - this all seems to work fine

我看不出封锁用户和req.user的其他属性之间有什么区别,我一遍又一遍地检查拼写错误和其他简单的错误。任何指导将不胜感激!

1 个答案:

答案 0 :(得分:0)

您的客户端在req.body.blockedUsers中传递数组,您需要使用req.body.blockedUsers [0]作为第一个索引。

如果它不起作用,你可以尝试使用req.body [' blockedUsers []'] [0]

祝你好运。