3

MySQL データベースに接続して任意のユーザーを認証するコードがいくつかあります...このコードは正常に動作します。問題は、MySQL から空の配列を受け取ると、nodejs がクラッシュすることです...

これはeveryauthのコードの一部です... sqlはエクスポートされた関数です...

var promise = this.Promise();

sql.getUserInfo(userInfo, function(user, err) {
    if(err) return promise.fulfill([ err ]);

    promise.fulfill(user);
});

return promise;

promiseが問題なのかわかりませんが、それが問題だとは思いません。これは、nodejs がクラッシュしたときのコンソールのエラーです。

starting step - extractLoginPassword
...finished step
starting step - authenticate
[]//--- it cames from mysql when there is no user and password 

timers.js:96
            if (!process.listeners('uncaughtException').length) throw e;

これは、db を呼び出して情報を抽出するエクスポートされた関数です。

exports.getUserInfo = function(user, callback) {
  var email = user.email;
  var passwd = user.password;
  var sql = "SELECT id_email, contrasena FROM usuarios.usuario WHERE id_email = ? AND contrasena = ? ";
  var params = [email, passwd];

  client.query(sql, params, function(err, rows) {

    if (err) return callback(null, err);
    if (rows && rows.length > 0) {
      var user = rows[0];

      callback(user,err);
    }
4

1 に答える 1

0

クエリが実際に何かを返すかどうかを確認し、そうである場合はエラーを解決します

sql.getUserInfo(userInfo, function(user, err) {
                if(err) return promise.fulfill([ err ]);
                if(!user) return promise.fulfill(['Authentication error']);
                promise.fulfill(user);
            });

うまくいくはずです^

于 2012-06-05T16:03:18.150 に答える