从NodeJS中的MYSQL返回布尔值
我正在处理一个函数,它将返回一个布尔值。该值表示用户是否存在于数据库中。目前我有这个:从NodeJS中的MYSQL返回布尔值
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
这很奇怪,因为有一个结果,所以行应该等于1,但随后返回false,而不是真实的。有没有可能是行的值不会改变中“database.query(...”
回答:
因为你的函数checkIfExists
是异步的,我想你用前人的精力回调系统是这样的:
function checkIfExists(callback) { var sql = "SELECT * FROM Users WHERE user = " + mysql.escape(req.body.username);
var rows = 0;
database.query(sql, function (err, result, fields) {
if (err) {
callback(err, null);
}
else {
console.log(result.length);
rows += result.length;
callback(null, rows > 0);
}
});
}
checkIfExists(function(err, isExists) {
if (err) {
// An error occured
}
else {
console.log(isExists);
}
});
编辑
您也可以simlify您checkIfExists
功能是这样的:
function checkIfExists(callback) { var sql = "SELECT * FROM Users WHERE user = " + mysql.escape(req.body.username);
database.query(sql, function (err, result) {
callback(err, result ? result.length > 0 : false);
});
}
更多的信息在这里: Understanding Async Programming in Node.js
希望它有帮助。
以上是 从NodeJS中的MYSQL返回布尔值 的全部内容, 来源链接: utcz.com/qa/265525.html