使用express js node js和angular 6与mysql数据库从数据库验证电子邮件

vwkv1x7d  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(274)

我正在创建一个带有“email”字段的用户,因此我想验证该电子邮件是否已经存在,如果存在,则必须显示错误。我在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语句
提前谢谢

d4so4syb

d4so4syb1#

我想你用的是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.`);
    }
});
wfsdck30

wfsdck302#

我认为解决问题的最简单方法是使数据库中的电子邮件列具有唯一性。如果您尝试插入一个新用户,并且该用户已经存在电子邮件,则查询将失败。
另一个解决方案是,如果已经存在的用户有电子邮件(来自req.body.email),则首先在数据库中进行查询。但这需要有两个不同的sql查询,我个人不喜欢这样。

相关问题