【问题标题】:email verification from database using express js node js and angular 6 with mysql database使用 express js node js 和 angular 6 与 mysql 数据库从数据库进行电子邮件验证
【发布时间】:2018-12-20 19:55:05
【问题描述】:

我正在创建一个带有“电子邮件”字段的用户,所以我想验证该电子邮件是否已经存在,如果存在则必须显示错误。我在 express js、node js、angular 6 和 mysql 数据库中有我的代码,下面是创建新用户的代码

exports.create = (req, res) => {    
    // Save to MySQL database
    let customer = req.body;
    Customer.create(customer).then(result => {      
        // Send created customer to client
        res.json(result);
    });
};

在上面的代码中我应该在哪里使用 if 语句

提前致谢

【问题讨论】:

  • 在调用 Customer.create 之前检查用户是否存在...
  • 你使用 sequelize 作为 ORM 吗?

标签: mysql node.js express angular6


【解决方案1】:

我认为解决您的问题的最简单方法是使数据库中的电子邮件列独一无二。如果您尝试使用现有电子邮件插入新用户,则查询将失败。

另一种解决方案是,如果已经存在的用户拥有电子邮件(来自 req.body.email),则首先进行查询,在数据库中查找。但这需要两个不同的 SQL 查询,我个人不喜欢这样。

【讨论】:

    【解决方案2】:

    我认为您正在使用 Sequelize ORM。

    你可以这样做

    Customer.findOrCreate({
        where: {
          email: req.body.email,
        },
        // other datas needs to inserted
        defaults: {
          name: req.body.name,
          username: req.body.username,
        },
      }).spread((data, created) => {
        if (created) {
          // your logics
        } else {
          res.status(400).send(`${req.body.email} already exists.`);
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2016-11-20
      • 2015-04-20
      • 1970-01-01
      • 1970-01-01
      • 2018-06-23
      • 2016-12-13
      • 1970-01-01
      • 2021-01-18
      • 2018-01-26
      相关资源
      最近更新 更多