【问题标题】:when which error is thrown in my mongoose query method当我的猫鼬查询方法中抛出哪个错误时
【发布时间】:2020-09-06 01:51:15
【问题描述】:

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

  .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) 何时抛出哪个错误。谁能解释一下?

【问题讨论】:

    标签: express mongoose


    【解决方案1】:

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

      .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));
      })
    

    当错误增加时,这将更有意义。你可以关注this的回答了解更多详情。

    【讨论】:

      猜你喜欢
      • 2021-03-09
      • 2018-06-15
      • 1970-01-01
      • 2012-07-24
      • 2013-01-02
      • 2017-05-08
      • 2021-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多