Пытаюсь понять метод сохранения Mongoose () - PullRequest
0 голосов
/ 25 апреля 2018

Чтение документов, которые я вижу;

Асинхронные операции Mongoose, такие как .save () и запросы, возвращают обещания ES6.

Думаю, я был знаком с обещаниями ES6Итак, я написал что-то вроде этого:

          newUser.save().then(user =>
            res.json({
              id: user.id,
              name: user.name,
              email: user.email
            })
          )
          .catch(
            (err = res.status(500).json({
              server: 'Something went wrong, please try again soon'
            }))
          );

Я тестирую и нахожу успешное добавление к БД, однако 500 все равно вызывается.Зарегистрированная ошибка выглядит следующим образом:

(node:40071) UnhandledPromiseRejectionWarning: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

С трассировкой стека, более того:

(node:40071) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:40071) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Я ломаю голову и обращаюсь к спецификациям, Документы Promise .

И я озадачен тем, почему это приводит к ошибкам, потому что я думал, что очень четко обрабатываю ошибки.Более того, все ошибки просто исчезают, когда я удаляю оператор catch все вместе!Как то, что происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...