2016-09-02 93 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以顯示所需的錯誤。