繁体   English   中英

Node.js注册表格

[英]Node.js Registration Form

我正在尝试在我的Web应用程序中实施注册表格。 一旦我将用户提供的“名称”和“电子邮件”插入我的数据库(Mysql)。 如果已经使用了“名称”或“电子邮件”,我需要单独的错误消息在注册表单上弹出,例如

“'名称'已被使用”

要么

“'电子邮件'已经被使用”

问题是我使用从Mysql中得到的错误来显示消息

“'名称'或'电子邮件'已被使用”

我的问题是我如何使用Mysql错误来区分是重复的“名称”还是“电子邮件”。

app.post(myArgs[0]+"/register", function(req,res){
      con.query('insert into users values(UUID(),\'' + req.body.user + '\',\''+req.body.pass+'\',\''+req.body.mail+'\',NULL)',function(err,res){
        if(err){
            console.error(err+"  Ooops name or email already in use !"); //here is where I want to find out whether it is the name or the email that is already in use! 
            errorregister();
          return;
        } else {
            passregister();
        }
      })
    function errorregister(){
      res.redirect(myArgs[0]+"/register");
      console.log(_dict);
    }
    function passregister(){
      res.redirect(myArgs[0]+"/login");
      console.log(_dict);
    }
  });

在数据库给您一个关于插入的错误之后,您知道emailname (或两者)都是重复的。

然后,您可以在数据库中搜索name ,然后搜索email

之后,自定义您的错误消息很容易。

如果出现竞争情况(两个用户试图同时注册相同的名称/电子邮件),则在插入之前进行检查可能会出错。 插入后,您肯定知道某些内容已重复。

在MySQL中插入时检查错误1586错误代码列表

您可以检查发生错误的INSERT

只要在UNIQUE KEY列中插入重复的密钥,就会返回此错误。 基于此错误,您可以向客户端发送AJAX response ,该AJAX response将更新DOM以显示所需的错误。

好吧,这就是我的完成方式

app.post(myArgs[0]+"/register", function(req,res){
      con.query('insert into users values(UUID(),\'' + req.body.user + '\',\''+req.body.pass+'\',\''+req.body.mail+'\',NULL)',function(err,res){
        if(err){
          error(err);
            return;
        } else {
            passregister();
        }
      })
      function error(err){
        if (err.toString().search("'PRIMARY'") != -1 ){
          console.error("  Ooops!!! name duplicated"); 
          res.redirect(myArgs[0]+"/register")
        } else {
            console.error("  Ooops!!! email duplicated");
            res.redirect(myArgs[0]+"/register")
          }
          return;
      }
    function passregister(){
      _dict[req.body.user]={};
      res.redirect(myArgs[0]+"/login");
      console.log(_dict);
    }
  });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM