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