首页 > 解决方案 > 当我的猫鼬查询方法中抛出哪个错误时

问题描述

我正在学习一门课程,其中讲师更新了一个看起来像这样的猫鼬文档

  .put(authenticate.verifyUser, (req, res, next) => {
    User.findById(req.params.userId) //get the user
      .then(
        (user) => {
          if (user != null && user.comments.id(req.params.commentId) != null) {
            //update the comment
            user.save().then(
              (user) => {
                User.findById(user._id)
                  .then((user) => {
                    //response logic
                  });
              },
              (err) => next(err) //(1) Is this error occur when the .save() throw any error?
            );
          } else if (user == null) {
             //handle error
            return next(err);
          } else {
             //handle error
            return next(err);
          }
        },
        (err) => next(err) //(2) When this error occur?
      )
      .catch((err) => next(err));
  })

但是我很难理解(err) => next(err). 谁能解释一下?

标签: expressmongoose

解决方案


像这样重新排列你的代码,

  .put(authenticate.verifyUser, (req, res, next) => {
    User.findById(req.params.userId)
      .then(
        (err,user) => {
          if(err) next(err)
          if (user != null && user.comments.id(req.params.commentId) != null) {
            //update the comment
            user.save().then(
              (err,user) => {
                 if(err) next(err)
                 else {
                    User.findById(user._id)
                    .then((user) => {
                      //response logic
                  });
                 }
              }
            );
          } else if (user == null) {
             //handle error
            return next(err);
          } else {
             //handle error
            return next(err);
          }
        }
      )
      .catch((err) => next(err));
  })

当错误增加时,这将更有意义。您可以按照答案了解更多详细信息。


推荐阅读