gpt4 book ai didi

mysql - NodeJS 中从 MYSQL 返回 bool 值

转载 作者:行者123 更新时间:2023-11-29 18:04:40 24 4
gpt4 key购买 nike

我正在开发一个将返回 bool 值的函数。该值表示数据库中是否存在用户。目前我有这个:

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(...' 中的行值是否可能没有更改?

最佳答案

因为你的函数 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);
}
});

编辑

您还可以像这样简化您的 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

希望有帮助。

关于mysql - NodeJS 中从 MYSQL 返回 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47993499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com