在 MERN 项目中,帖子作者可以删除自己的帖子。我想让具有特定 ID 的其他人(例如管理员)也可以删除某人的帖子。
在组件 PostItem.js 的正面(React),我添加了以下代码:
{!auth.loading && (user === auth.user._id || auth.user._id == '66e3fe82d7e3d31c98d6bcfe') && (
<button
onClick={(e) => deletePost(_id)}
type='button'
class='btn btn-danger'
>
<i class='fas fa-times'></i>
</button>
)}
删除按钮对于帖子的作者可见,对于具有此 ID 的人也可见。 但是,当我单击按钮时,什么也没有发生。 在背面,在 paths posts.js 中,我添加了以下代码:
`if (post.user.toString() !== req.user.id || req.user.id !== '66e3fe82d7e3d31c98d6bcfe') {
return res.status(401).json({ msg: 'User not authorized' });
}
await post.remove();`
但是当我点击按钮时仍然没有任何反应。
问题出在您的后端代码中。 if 语句中的条件。您正在使用
||
,但您应该使用 &&
。
if (post.user.toString() !== req.user.id && req.user.id !== '66e3fe82d7e3d31c98d6bcfe') {
return res.status(401).json({ msg: 'User not authorized' });
}
await post.remove();