2016-09-02 94 views
0

我试图在我的web应用程序中实现注册表单。一旦我将用户提供的“名称”和“电子邮件”插入到我的数据库(Mysql)中。我需要单独错误信息弹出登记表上,如果“名”或“电子邮件”已被使用,像Node.js注册表格

“的‘名称’已在使用”

“ '电子邮件' 已在使用”

问题是,我用我的错误从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); 
    } 
    }); 
+0

您设置的姓名和电子邮件在MySQL作为唯一键? –

+0

@PareshGami 是的,姓名和电子邮件是我数据库中的唯一键。 –

+0

所以在插入前请检查名称或电子邮件是否存在 –

回答

0

好吧,这是我得到了它做

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); 
    } 
    }); 
2

数据库后给你一个错误的插入,你知道,无论是emailname,或两者兼而有之,是重复的。

然后您可以搜索DB为name,然后为email

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

插入前检查可能会出现错误的情况下(两个用户试图同时注册相同的名称/电子邮件)的情况下。插入后,你肯定知道有重复的东西。

0

在MySQL(List of error codes

您可以检查其INSERT发生错误插入时检查错误1586

无论何时在UNIQUE KEY列中插入重复密钥,都会返回此错误。根据此错误,您可以发送AJAX response到客户端,该客户端将更新DOM以显示所需的错误。