Javascript js:;无法读取属性';toString';未定义的
我正在学习Node.js的restApi课程,这是一个博客API。我的问题是,当为未经授权的用户删除帖子时,它首先会给我一个500错误Javascript js:;无法读取属性';toString';未定义的,javascript,node.js,api,restapi,Javascript,Node.js,Api,Restapi,我正在学习Node.js的restApi课程,这是一个博客API。我的问题是,当为未经授权的用户删除帖子时,它首先会给我一个500错误 exports.deletePost = asyncHandler(async (req, res, next) => { const post = await Post.findByIdAndDelete(req.params.id); if (!post) { return next( new ErrorR
exports.deletePost = asyncHandler(async (req, res, next) => {
const post = await Post.findByIdAndDelete(req.params.id);
if (!post) {
return next(
new ErrorResponse(`Post not found with id of ${req.params.id}`, 404)
);
}
// Make sure user is post owner
if (post.user.toString() !== req.user.id) {
return next(
new ErrorResponse(
`User ${req.params.id} is not authorized to delete this post`,
401
)
);
}
post.remove();
res.status(200).json({ success: true, data: post});
});
“错误”:”无法读取未定义的属性“toString”
。但当我再次这样做的时候,它会给我
找不到id为的帖子
当然,它应该给我
未授权删除此帖子
更新帖子也是一样的,我甚至试着从课程中复制/粘贴代码,但同样的问题
后置控制器
exports.deletePost = asyncHandler(async (req, res, next) => {
const post = await Post.findByIdAndDelete(req.params.id);
if (!post) {
return next(
new ErrorResponse(`Post not found with id of ${req.params.id}`, 404)
);
}
// Make sure user is post owner
if (post.user.toString() !== req.user.id) {
return next(
new ErrorResponse(
`User ${req.params.id} is not authorized to delete this post`,
401
)
);
}
post.remove();
res.status(200).json({ success: true, data: post});
});
updatePost
您可以在post.user对象上引入类型检查,以确保post中存在该用户
if (typeof post.user == "undefined" || post.user.toString() !== req.user.id)
我已经试过了代码
if(type of post.user==“undefined”| | post.user.toString()!==req.user.id)
但在使用此原因后,在错误处理中给我一个错误“用户未授权”
在我的例子中,我必须将req.user.id
转换为整数
if (post.user !== req.user.id.parseInt)
我认为它首先起作用,因为它不再给我那个错误。但它还是会删除帖子。知道如何停止吗?我已经修改了代码,这样它就可以停止请求。如果找不到用户或者id与请求用户不匹配,那么就会触发错误响应。