无法获得req.userData.role的值

时间:2018-07-05 14:21:28

标签: javascript node.js express

现在的代码正在修改一个帖子,正如您在router.put中看到的那样。

它检查_id: req.params.id, poster: req.userData.userId 这两项检查允许创建帖子的用户仅编辑帖子。 但是我试图添加一个可以修改任何帖子的管理员。因此,我试图检索用户的角色,但似乎无法做到这一点。

这是我正在运行的代码:

router.put("/:id",
  authCheck,
  multer({
    storage: storage
  }).single('file'), (req, res, next) => {
    let filePath = req.body.filePath;
    if (req.file) {
      const url = req.protocol + '://' + req.get('host');
      filePath = url + '/documents/' + req.file.filename
    }
    const post = new Post({
      _id: req.body.id,
      header: req.body.header,
      message: req.body.message,
      filePath: filePath,
      poster: req.userData.userId,
    });
    console.log('user ROLE = ' ,req.userData.role);

    Post.updateOne({
      _id: req.params.id,
      poster: req.userData.userId
    }, post).then(result => {
      if (result.nModified > 0) {
        res.status(200).json({
          message: "Update successful!"
        });
      } else {
        res.status(401).json({
          message: "Not authorised!"
        });
      }
    });
  });

我不是最有经验的编码员,任何人都可以指出正确的方向以获取该值。

这就是我在写的console.log('user ROLE = ' ,req.userData.role);

这是我的用户架构:

const userSchema = mongoose.Schema({
  email: {
    type: String,
    required: true,
    unique: true
  },
  password: {
    type: String,
    required: true
  },
  role: {
    type: String,
    required: true
  }
});

这是我的中间件(如果需要):

module.exports = (req, res, next) => {
  try {
    const token = req.headers.authorization.split(' ')[1];
    const decodedToken = jwt.verify(token, 'secret_this_is_my_secret');
    req.userData = { email: decodedToken.email, userId: decodedToken.userId, role: decodedToken.role };
    next();
  } catch (error) {
    res.status(401).son({message: 'Auth failed!' });
  }
}

如果您还有其他想看的,请告诉我,谢谢

0 个答案:

没有答案