使用nodejs检查mysql数据库中是否存在电子邮件

问题描述:

当用户输入表单时需要检查电子邮件是否存在于 mysql 中.从表单 requser.email 将用户通过电子邮件输入表单.如何将 requser.email 与数据库进行比较以找到匹配项.

Need to check email is exists or not in mysql when user enters in the form. From form requser.email will have user emaild entered in form. How to compare requser.email with database to find match.

 router.post('/signup', function(req, res, next) {
    var requser = req.body.data.user;
  var hash = bcrypt.hashSync(req.body.data.user.password)
  var str = "";

  /*email check start*/

  /*email check end*/
  switch (requser.role) {
    case "approver":
      str = 'INSERT INTO users (name, email, password,role) values("' + requser.name + '","' + requser.email + '","' + hash + '","approver")';
      break;
    case "user":
      str = 'INSERT INTO users (name, email, password,role) values("' + requser.name + '","' + requser.email + '","' + hash + '","user")';
      break;
    case "admin":
      str = 'INSERT INTO users (name, email, password,role) values("' + requser.name + '","' + requser.email + '","' + hash + '","admin")';
      break;
  }
  if (!str) {
    return res.json({
      "status": "error",
      "data": {
        "redirect": "/"
      }
    });
  }
  connection.query(str, function(error, rows) {
    if (error) {
      console.log("error ocurred", error);
    }
    //console.log(rows);
    res.json({
      "status": error ? "error" : "success",
      "data": rows || ""
    })
  });
});

您可以编写一个 SELECT 1 查询来获取该电子邮件地址的记录,或者定义一个 UNIQUE CONSTRAINT 在电子邮件字段上,以便插入失败.

You can either write a SELECT 1 query to get the record with that email address or define a UNIQUE CONSTRAINT on email field so that insert would fail.

这是 UNIQUE CONSTRAINT 和这是 SELECT 1 的示例:

Here's an example of UNIQUE CONSTRAINT and here's an example of SELECT 1:

SELECT 1 FROM users WHERE email = <email>;