如何在 MERN 堆栈项目后端添加某个 id 删除帖子的权限?

问题描述 投票:0回答:1

在 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();`

但是当我点击按钮时仍然没有任何反应。

reactjs node.js mongodb permissions mern
1个回答
0
投票

问题出在您的后端代码中。 if 语句中的条件。您正在使用

||
,但您应该使用
&&

if (post.user.toString() !== req.user.id && req.user.id !== '66e3fe82d7e3d31c98d6bcfe') {
    return res.status(401).json({ msg: 'User not authorized' });
}
await post.remove();
© www.soinside.com 2019 - 2024. All rights reserved.