从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

回到顶部