mysql - 为什么这段代码与 nodejs 和 everyauth 会因 MySQL 的空数组而崩溃?

标签 mysql node.js everyauth

我有一些代码可以连接到 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;

这是调用数据库并提取信息的导出函数:

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);
    }

最佳答案

只是检查查询是否确实返回了一些东西,如果是则执行一些错误

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

应该可以正常工作^

关于mysql - 为什么这段代码与 nodejs 和 everyauth 会因 MySQL 的空数组而崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10875288/

相关文章:

node.js - 如何增加批量数组字段 mongodb 上的计数器

node.js - connect.session 是否可以与 Node-azure 一起使用

node.js - NowJS 当前 session

mysql - 请求一个sql查询

php - 尝试从数据库读取数据并将其显示在表中,其中 id 是插入 CodeIgniter 的最后一个 id

mysql - 如何在数据库中找到下一行/上一行?

mysql - 拒绝在 TIMESTAMP 字段上使用索引

node.js - npm install -g less 不起作用 : EACCES: permission denied

javascript - 为什么当我需要全局数组索引时未定义它?

node.js - Express 3.0 + Everyauth + HTTPS