(узел: 20732) [DEP0018] Предупреждение об устаревании: отклонение необработанного обещания устарело. В будущем в nodejs - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь создать ссылку для подтверждения в моем приложении. хотя он работает нормально и генерирует ссылки тоже, но когда я посещаю эту ссылку, он говорит в консоли Chrome

POST http://localhost:3000/api/auth/confirmation 400 (Bad Request)

и терминал выдает эту ошибку

(node:20732) [DEP0018] DeprecationWarning: Unhandled promise rejections are depr
ecated. In the future, promise rejections that are not handled will terminate th
e Node.js process with a non-zero exit code.
(node:20732) DeprecationWarning: collection.findAndModify is deprecated. Use fin
dOneAndUpdate, findOneAndReplace or findOneAndDelete instead.

это мой роутер, файл роутер / auth

router.post('/confirmation', (req, res) => {
  const {token} = req.body.token;
  User.findOneAndUpdate(
    {confirmationToken: token},
    {confirmation: '', confirmed: true},
    {new: true}
).then(user => user ? res.json({user: user.toAuthJSON() }) : res.status(400).json({}));
});

как я могу решить эту проблему. это из-за обработчика обещаний или какой-то другой проблемы с nodejs.

1 Ответ

0 голосов
/ 30 августа 2018

Если вы хотите подавить unhandled promise rejection warning, все, что вам нужно сделать, это позвонить .catch() на обещание.

router.post('/confirmation', (req, res) => {
  const {token} = req.body.token;
  User
  .findOneAndUpdate(
    {confirmationToken: token},
    {confirmation: '', confirmed: true},
    {new: true})
  .then(user => res.json({user: user.toAuthJSON() }))
  .catch(err => res.status(400).json({}));
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...