我试图限制一个用户编辑其他人帖子的能力。 当我点击“编辑帖子”时它改变了帖子的作者,是因为' save'方法还是? 这是我的尝试:
router.put('/posts/:id', passport.authenticate('jwt'), (req, res) => {
Post.findOne({_id: req.params.id}, (err, post) => {
if (err) throw err;
if (post.author = req.user._id) {
post.title = req.body.title,
post.content = req.body.content,
post.postImageUrl = req.body.postImageUrl
post.save((err, updatedPost) => {
if (err) throw err;
else {
res.json({message:'You have successfully updated your post', success: true});
}
});
} else {
res.json({success: false, message: 'You are not allowed to do this.'});
}
});
});
我检查了post.author和req.user._id,他们匹配。
答案 0 :(得分:0)
请检查您的条件,检查当前用户是否是帖子的作者。而不是检查是否相等,您正在尝试分配和更改作者值。
if (post.author = req.user._id)
<强>解决方案:强>
Mongoose提供了一个.equals
方法来检查对象ID的相等性。这是Mongoose使用的mongodb-native driver .equals
方法的docs的链接。
if (post.author.equals(req.user._id))