【发布时间】:2018-06-15 23:53:54
【问题描述】:
我正在尝试限制一位用户编辑其他人的帖子的能力。 当我点击“编辑帖子”时,它会更改帖子的作者,是因为“保存”方法还是? 这是我的尝试:
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,它们匹配。
【问题讨论】:
-
这个
if (post.author = req.user._id)不应该是if (post.author == req.user._id)吗? -
那是个问题,但现在它返回作者和用户不匹配,虽然他们是..
-
它们都是字符串吗?你能提供一个值的样本吗?
-
post.author是一个引用,req.user._id是一个对象属性.. -
我强烈怀疑 post.author 和 req.user._id 可能代表不同的事物。您能否通过发布存储在 mongo 中的帖子和用户文档示例来详细说明您的问题。
标签: express mongoose mean-stack