最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何在注册控制器中添加条件以检查电子邮件是否已经存在?

IT培训 admin 10浏览 0评论

如何在注册控制器中添加条件以检查电子邮件是否已经存在?

当用户尝试注册并输入详细信息时,将调用此API。我正在查看是否可以添加一个条件,说明电子邮件已经存在。

我想我需要类似的东西:

      const user = await User.find({ email })
      if (user) {
        res.status(400).json({ message: "User with this already exists" })
      }

但是我正在创建一个新用户,因此应将上述查询放在哪里。我对执行顺序感到困惑。

module.exports = {
    registerUser: async(req, res, next) => {
      try {
        var {
          username,
          email,
          password
        } = req.body
        if (password) {
          const salt = bcrypt.genSaltSync(10)
          password = bcrypt.hashSync(password, salt)
        }
        if (!username || !email || !password) {
          return res
            .status(400)
            .json({
              message: "Username, email and password are must"
            })
        }
        if (!validator.isEmail(email)) {
          return res.status(400).json({
            message: "Invaid email"
          })
        }
        if (password.length < 6) {
          return res
            .status(400)
            .json({
              message: "Password should be of at least 6 characters"
            })
        }
        const user = await User.create({
          username,
          email,
          password
        })
        if (!user) {
          return res.status(404).json({
            error: "No user found "
          })
        }
        return res.status(200).json({
          user
        })
      } catch (error) {
        return next(error)
      }
    }
回答如下:

将其放置在注册逻辑之前的try块内,因为如果电子邮件不存在,则find可能会引发抛出和错误。

如何在注册控制器中添加条件以检查电子邮件是否已经存在?

当用户尝试注册并输入详细信息时,将调用此API。我正在查看是否可以添加一个条件,说明电子邮件已经存在。

我想我需要类似的东西:

      const user = await User.find({ email })
      if (user) {
        res.status(400).json({ message: "User with this already exists" })
      }

但是我正在创建一个新用户,因此应将上述查询放在哪里。我对执行顺序感到困惑。

module.exports = {
    registerUser: async(req, res, next) => {
      try {
        var {
          username,
          email,
          password
        } = req.body
        if (password) {
          const salt = bcrypt.genSaltSync(10)
          password = bcrypt.hashSync(password, salt)
        }
        if (!username || !email || !password) {
          return res
            .status(400)
            .json({
              message: "Username, email and password are must"
            })
        }
        if (!validator.isEmail(email)) {
          return res.status(400).json({
            message: "Invaid email"
          })
        }
        if (password.length < 6) {
          return res
            .status(400)
            .json({
              message: "Password should be of at least 6 characters"
            })
        }
        const user = await User.create({
          username,
          email,
          password
        })
        if (!user) {
          return res.status(404).json({
            error: "No user found "
          })
        }
        return res.status(200).json({
          user
        })
      } catch (error) {
        return next(error)
      }
    }
回答如下:

将其放置在注册逻辑之前的try块内,因为如果电子邮件不存在,则find可能会引发抛出和错误。

发布评论

评论列表 (0)

  1. 暂无评论