2016-12-28 15 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(); }); 

コードは動作しません(私は、ユーザーかどうかを確認しようとしている:動作するコードは(コードはデータベースとの接続を作成する関数のDB()がある)この1であります存在する場合)は、次のとおりです。

この状況をどのように解決できるか知っていれば、感謝しています。私はこの例外をスローした版を作った

enter image description here

答えて

2

は、私は、クエリの実行を取得する前に、データベース接続がクローズされて賭けます。最初のクエリのをerrハンドラに移動し、2番目のクエリのコールバック関数に移動します。

EDIT:

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で接続を閉じることなく、データベースに2回質問することはできませんか? –

+0

あなたは間違いなく可能です。コンソールの最初のクエリのエラーが表示されますか?あるいは、あなたは 'user already exists'レスポンスを得ていますか? –

+0

ユーザーが既に存在する場合、そのユーザーには存在するというメッセージが表示されます。しかし、今、うまく機能している最初の状況のような機能を戻しても、エラーは発生しません。新しいユーザが登録されたとしか言いませんが、データベースを開くと表示されません。 –

関連する問題