Javascript js:;无法读取属性';toString';未定义的

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

我正在学习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 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与请求用户不匹配,那么就会触发错误响应。