【发布时间】:2017-12-27 14:00:38
【问题描述】:
我正在研究一个返回布尔值的函数。该值表示数据库中是否存在用户。目前我有这个:
function checkIfExists(){
var sql = "SELECT * FROM Users WHERE user = " + mysql.escape(req.body.username);
var rows = 0;
database.query(sql, function(err, result, fields){
console.log(result.length);
rows += result.length;
});
return rows > 0;
}
console.log(checkIfExists());
我使用 'console.log(result.length)' 来验证是否有结果。当我测试一些输入时,我得到了这个:
false
1
这很奇怪,因为只有一个结果,所以 rows 应该等于 1。但是它返回 false 而不是 true。 'database.query(...' 中的行的值是否可能没有改变?
【问题讨论】:
-
.query 接受一个函数作为其第二个参数,在查询完成时调用该函数。换句话说,原始函数可能会在作为参数传递给查询的函数被调用之前返回。
-
您在返回之前是否对行进行了控制台操作?包含一个吗?
-
如果我将 'console.log(rows)' 放在'return rows > 0' 之前,它会给我 '1'。但是函数返回false