У меня ошибка в моих регистрационных маршрутах - PullRequest
0 голосов
/ 28 мая 2019

В ходе тестирования, если маршрут регистрации моего пользователя работает нормально с использованием почтальона в качестве тестовой машины, выдается ошибка, которую я не знаю, что это значит.

Я пытался использовать асинхронную функциючтобы поймать ошибку, но это не сработало

const express = require('express');
const router = express.Router();
// Use to help set a default image for users
const gravatar = require('gravatar');
// Use to encrypt our password from bringing plain text
const bcrypt = require('bcryptjs');

// I add the user model from my model
// So i can be able to check create a new registration
// and also check if email exist
const User = require('../../models/User');


// @route   GET api/users/register
// @desc    Register user
// @access  Public
router.post('/register', (req, res) => {  

  User.findOne({ email: req.body.email }).then(user => {
    if (user) {
      errors.email = 'Email already exists';
      return res.status(400).json(errors);
    } else {
      const avatar = gravatar.url(req.body.email, {
        s: '200', // Size
        r: 'pg', // Rating
        d: 'mm' // Default
      });

      const newUser = new User({
        name: req.body.name,
        email: req.body.email,
        avatar,
        password: req.body.password
      });

      bcrypt.genSalt(10, (err, salt) => {
        bcrypt.hash(newUser.password, salt, (err, hash) => {
          if (err) throw err;
          newUser.password = hash;
          newUser
            .save()
            .then(user => res.json(user))
            .catch(err => console.log(err));
        });
      });
    }
  });
});


module.exports = router;

Я хочу, чтобы пользовательский ввод на почтальоне мог отправлять форму, чтобы я мог знать, действительно ли работает маршрут нормально.И это ошибка, которую я получил на своей консоли

(node:14164) UnhandledPromiseRejectionWarning: ReferenceError: errors is not defined
    at User.findOne.then.user (the working director/name.js:26:7)
    at process._tickCallback (internal/process/next_tick.js:68:7)
(node:14164) 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:14164) [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.

1 Ответ

0 голосов
/ 28 мая 2019

Обычно мы должны обработать ошибку следующим образом:

 User.findOne({ email: req.body.email }).then(user => {
   // ...
 }).catch(error => {
    console.log('error', error)
    res.json({error: error})
 })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...