2016-12-28 99 views
1

我試圖檢查數據庫中的用戶是否也存在。我的代碼工程如果我添加一個用戶到數據庫而不檢查是否存在與它的名字的人。當我嘗試檢查它時會出現問題,因爲代碼可以識別用戶是否存在,但如果用戶不存在,則無法將用戶添加到數據庫。其工作原理的代碼是這個(函數DB()是其中的代碼創建與數據庫的連接):檢查用戶是否已經存在(Node.js和mysql)

app.post('/Registro', function(req, res){ 
var conDB=DB(); 
var reg={ 
    Usuario: req.body.Usuario, 
    Contra: req.body.Contra 
}; 
console.log(req.body.Usuario+" "+req.body.Contra); 
var query=conDB.query('INSERT INTO Usuario SET ?',reg,function(err, res){ 

}); 
res.send("Usuario: "+req.body.Usuario+" y Contraseña: "+req.body.Contra + "REGISTRADOS"); 
conDB.end(); }); 

的代碼不工作(這裏我想檢查用戶是否存在)是這一個:

app.post('/Registro', function(req, res){ 
var conDB=DB(); 
var reg={ 
    Usuario: req.body.Usuario, 
    Contra: req.body.Contra 
}; 
var UsuarioReg=req.body.Usuario; 
conDB.query('SELECT * FROM Usuario WHERE Usuario = ?', UsuarioReg,function(err,rows){ 
    if(err) 
     return console.log(err); 
    if (!rows.length) 
    { 
      conDB.query('INSERT INTO Usuario SET ?',reg,function(err, respuesta){ 
      return respuesta.send("Usuario: "+req.body.Usuario+" y Contraseña: "+ 
        req.body.Contra + "REGISTRADOS"); 
      }); 
    } 
    else 
    { 
     return res.send("Este usuario ya existe"); 
    } 
}); 
    conDB.end(); 
}); 

如果有人知道我該如何解決這種情況,我將不勝感激!

我已經拋出其此異常的版本:

enter image description here

回答

2

我敢打賭得到執行查詢之前的數據庫連接關閉。我會將conDB.end()從第一個查詢移入err處理程序,並移入第二個查詢的回調函數。

編輯:

app.post('/Registro', function(req, res){ 
    var conDB=DB(); 
    var reg={ 
     Usuario: req.body.Usuario, 
     Contra: req.body.Contra 
    }; 
    var UsuarioReg=req.body.Usuario; 
    var ContraReg=req.body.Contra; 
    conDB.query('SELECT * FROM Usuario WHERE Usuario = ? and Contra= ?', [UsuarioReg,ContraReg] 
,function(err,rows){ 
    if(err) { 
     conDB.end(); 
     return console.log(err); 
    } 

    if (!rows.length) 
    { 
     conDB.query('INSERT INTO Usuario SET ?',reg,function(err, results){ 
      conDB.end(); 
      return res.send("Usuario: "+req.body.Usuario+" y Contraseña: "+ 
       req.body.Contra + "REGISTRADOS"); 
     }); 
    } 
    else 
    { 
     conDB.end(); 
     return res.send("Este usuario ya existe"); 
    } 
}); 

}); 
+0

我已經改變了代碼,但它仍然無法正常工作。我所做的是拿出說回報res.send的部分(「Usuario:」+ req.body.Usuario +「yContraseña:」+ req.body.Contra +「REGISTRADOS」);從將用戶添加到數據庫的功能。該功能必定存在問題。我不能在不關閉Node.js中的連接的情況下向數據庫提問兩次? –

+0

你一定可以。您是否在控制檯的第一個查詢中看到錯誤?或者你是否獲得了'用戶已存在'響應? –

+0

當用戶已經存在時,它會拋出一條消息說明它存在。但是現在,如果第一種情況運行良好,那麼它就不會產生錯誤。它只說新用戶已註冊,但是當我打開數據庫時,它不會出現 –

相關問題