向 Mongodb 添加数据时 Node js 中的错误处理

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

大家好,我正在尝试处理 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 块中也发生任何错误,我将发送错误,但不知何故,当我遇到第一个错误“如果电子邮件已存在”时,它仍然在我的前端中,我收到的响应是“添加时出错”

javascript node.js express
1个回答
1
投票

我就是这样做的,所以如果用户已经存在,你会发回一个带有状态的json

400
(错误的请求,表明服务器无法或不会处理该请求)

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

并且在捕获中您发送了状态

500
,表明服务器端出了问题

  res.status(500).send("Server error");
© www.soinside.com 2019 - 2024. All rights reserved.