Ответы пользователя по тегу MongoDB
  • Как в Mongoose создать уникальное поле?

    andreimakushkin
    @andreimakushkin
    JavaScript Developer
    При попытке создания пользователя с уже существующем логином, Mongo выдаст ошибку, что-то вроде этой:
    E11000 duplicate key error collection...

    Лучше дополнительно вручную обработать этот сценарий

    const createUser = async (req, res) => {
      // Проверяем наличие входящих данных
      if (!req.body.login || !req.body.passwd) {
        return res.status(400).json({
          message: 'Логин и пароль обязательны для заполнения',
        });
      }
    
      try {
        // Проверяем, есть ли в бд пользователь с таким логином
        const user = await User.findOne({ login: req.body.login }).exec();
    
        // Если пользователь найден возвращаем ошибку, иначе создаем его
        if (user) {
          res.status(409).json({ message: 'Пользователь с таким логином уже зарегистрирован' });
        } else {
          await User.create(req.body);
          res.status(201).json({ message: 'Пользователь создан' });
        }
      } catch (error) {
        console.error(error);
        res.status(400).end();
      }
    };
    Ответ написан
    Комментировать