2016-09-02 2 views
0

Я пытаюсь внедрить регистрационную форму в своем веб-приложении. Как только я введу «имя» и «письмо», предоставленные пользователем, в мою базу данных (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

После БД даст вам сообщение об ошибке при вставке, вы знаете, что либо email или name, или оба, дублируется.

Затем вы можете найти БД для name, а затем для email.

После этого настройка сообщения об ошибке проста.

Проверка перед вставкой может быть неправильной в случае условий гонки (два пользователя одновременно пытаются зарегистрировать одно и то же имя/адрес электронной почты). После вставки вы точно знаете, что что-то дублируется.

0

Проверьте наличие ошибок 1586 при вставке в MySQL (List of error codes)

Вы можете проверить, для которых INSERT произошла ошибка.

Всякий раз, когда дубликат ключа вводится в столбце UNIQUE KEY, эта ошибка возвращается. На основании этой ошибки вы можете отправить клиенту AJAX response, который обновит DOM, чтобы отобразить требуемую ошибку.

Смежные вопросы