现在的代码正在修改一个帖子,正如您在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!' });
}
}
如果您还有其他想看的,请告诉我,谢谢