2016-09-02 4 views
0

Ich versuche ein Registrierungsformular in meine Web App zu implementieren. Sobald ich den "Namen" und "E-Mail", die vom Benutzer zur Verfügung gestellt wurden, in meine Datenbank (Mysql) einfüge. Ich brauche separate Fehlermeldungen auf dem Anmeldeformular Pop-up, wenn der ‚Name‘ oder ‚E-Mail‘ ist bereits im Einsatz, so etwas wieNode.js Registrierungsformular

„der‚Name‘ist bereits im Einsatz“

oder

"die 'E-Mail' ist bereits im Einsatz"

Das Problem ist, ich den Fehler verwende ich von der Mysql erhalten die Nachricht

zu zeigen „Name 'oder‚E-Mail‘ist bereits im Einsatz“

Meine Frage ist, wie kann ich Verwenden Sie den Mysql-Fehler, um zu unterscheiden, ob es sich um den "Namen" oder die "E-Mail" handelt, die dupliziert werden.

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

Sie setzen Namen und E-Mail als eindeutiger Schlüssel in Mysql? –

+0

@PareshGami Ja, Name und E-Mail sind eindeutige Schlüssel in meiner Datenbank. –

+0

also vor dem Einlegen bitte überprüfen Name oder E-Mail existiert oder nicht –

Antwort

0

Ordnung ist dies, wie ich es

getan hätte
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

Nach dem DB geben Sie einen Fehler beim Einsetzen, wissen Sie, dass entweder email oder name oder beide dupliziert.

Sie können dann die DB nach name suchen, dann nach email.

Danach ist das Anpassen Ihrer Fehlermeldung einfach.

Die Überprüfung vor dem Einfügen kann bei Rennbedingungen fehlschlagen (zwei Benutzer versuchen, denselben Namen/dieselbe E-Mail gleichzeitig zu registrieren). Nach dem Einfügen wissen Sie sicher, dass etwas doppelt vorhanden ist.

0

prüfen Fehler 1586 wenn in MySQL (List of error codes)

Einfügen können Sie überprüfen, für die INSERT der Fehler aufgetreten ist.

Immer wenn ein doppelter Schlüssel in eine UNIQUE KEY-Spalte eingefügt wird, wird dieser Fehler zurückgegeben. Aufgrund dieses Fehlers können Sie einen AJAX response an den Client senden, der DOM aktualisiert, um den erforderlichen Fehler anzuzeigen.

Verwandte Themen