路由捕获一个空错误(User.findOne)

时间:2020-04-06 19:23:00

标签: node.js express mern

我很确定这应该是一件简单的事情,但是我不知道为什么会发生,我在这里使用了nodejs和mongodb。

这是我正在调用的路由,当我这样做时,它只是返回带有空对象的404。 我确定这不是因为它无法找到具有电子邮件地址的用户,因为在这种情况下userFound将为null。但是我找不到为什么它直接捕捉到一个空错误或什么?

router.post("/notify", function (req, res) {
  User.findOne({ email: req.body.email }).then((userFound) => {
      const notification = {
        type: req.body.type,
        title: req.body.title,
        description: req.body.description,
      };
      notification.destination = userFound;
      Notification.save(function (err, notification) {
        if (err) {
          console.log(err);
          res.status(500).send();
        } else {
          res.send(notification);
        }
      });
    })
    .catch((error) => {
      return res.status(404).json(error);
    });
});

对不起,我真的很愚蠢地问这个。.谢谢您的提前帮助。

2 个答案:

答案 0 :(得分:0)

尝试在回调函数的参数中添加下一个:

router.post("/notify", function (req, res, next) {
  User.findOne(...)
    .catch((error) => next(error));
});

答案 1 :(得分:0)

首先要感谢你们所有的帮助人员,结果证明我确实做了一些非常愚蠢的事情,实际上我在打电话handleKeyDown(e){ if (e.key === 'Enter') { console.log("working"); this.handleSubmit(e); // <-- pass e next } } 而不是const名称Notification.save(),所以这就是为什么我得到notification.save()错误