双重注册时出现内部服务器错误,而不是 Brad Traversy MERN 堆栈课程上的错误请求

问题描述 投票:0回答:0

请我需要你的帮助。我已经遇到这个问题一周了,每当我尝试注册同一个用户两次时,我都会收到错误状态(500)内部服务器错误,并在 Postman 上显示消息“服务器错误”,但从课程来看,我应该收到错误状态(400)错误请求,消息:“用户已存在”可能是什么问题? 谢谢

这是我的代码

const express = require('express');
const router = express.Router();
const User = require('../../models/User');
const gravatar = require('gravatar');
const bcrypt = require('bcryptjs');
const { check, validationResult } = require('express-validator');

// @route POST api/users
// @desc Register user
// @access Public
router.post(
  '/',
  [
    check('name', 'Name is required').not().isEmpty(),
    check('email', 'Please include a valid email').isEmail(),
    check(
      'password',
      'Please enter a password with 8 or more characters'
    ).isLength({ min: 8 }),
  ],
  async (req, res) => {
    const errors = validationResult(req);
    if (!errors.isEmpty()) {
      return res.status(400).json({ errors: errors.array() });
    }

    const { name, email, password } = req.body;

    try {
      // See if user exist
      let user = await User.findOne({ email });

      if (user) {
        return res.status(400).json({ errors: [{ errors: errors.array() }] });
      }
      //  Get users gravatar

      const avatar = gravatar.url(email, {
        s: '200',
        r: 'pg',
        d: 'mm',
      });

      user = new User({
        name,
        email,
        avatar,
        password,
      });
      // Encrypt password

      const salt = await bcrypt.genSalt(10);
      user.password = await bcrypt.hash(password, salt);

      await user.save();

      //  Return jsonwebtoken
      res.send('User registered great');
    } catch (err) {
      console.error(err.message);
      res.status(500).send('Server error');
    }
  }
);

module.exports = router;

我已经检查了无数次代码,但仍然没有理由收到内部服务器错误(500)而不是错误请求(400),我什至逐行阅读它,但仍然找不到问题.

node.js mern internal-server-error bad-request
© www.soinside.com 2019 - 2024. All rights reserved.