簡體   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