Обработка ошибок в node js при добавлении данных в mongodb - PullRequest
0 голосов
/ 01 апреля 2020

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

handler.post(async (req, res) => {
  let otp = Math.floor(1000 + Math.random() * 9000);
  const salt = await bcrypt.genSalt(10);
  const hashedpassword = await bcrypt.hash(data.password, salt);
  data["password"] = hashedpassword;
  data["otp"] = otp;
  data["active"] = false;
  delete data.confirmPassword;

  try {
    const emailexist = await req.db
      .collection("users")
      .findOne({ email: data.email });
    if (emailexist) {
      return res.status(401).send('email already exits')
    } else {
      let doc = await req.db.collection("users").insertOne(data);
      res.json(doc.ops[0]);
  } catch (err) {
    console.log(err);
    res.status(401).send("Error while adding");
  }
});

, так что, как вы можете видеть, есть два шанса ошибки один раз, если электронное письмо существует, и затем, если это так, я отправляю сообщение об ошибке

Второй есть вероятность, что если во время вставки возникнет какая-либо ошибка для этого тоже в блоке catch, я отправляю ошибку, но каким-то образом, когда я сталкиваюсь с первой ошибкой, «если электронная почта уже существует», все еще в моем интерфейсе, я получаю ответ «Eror while добавление "

1 Ответ

1 голос
/ 01 апреля 2020

Вот как я это делаю, поэтому, если пользователь уже существует, вы отправили обратно json со статусом 400 (неверный запрос, указывающий, что сервер не может или не будет обрабатывать запрос)

  if (emailexist) {
  return res.status(400).json({error:"User Already Exists"})
  }

и в улове вы отправили его со статусом 500, указывающим что-то пошло не так на стороне сервера

  res.status(500).send("Server error");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...