当我运行这个函数时,当我返回时,我得到空,因为我在 mysql 查询中有返回,我该如何解决这个问题?
function CheckStorage(Host, Slots, SSLocation) {
connection.query("SELECT * FROM `machines` WHERE `shost` LIKE '" + Host + "' AND `location` LIKE '" + SSLocation + "' AND `slotsa` >= " + Slots + "", function(err, rows, fields) {
if(rows[0]) {
console.log(rows[0]["ip"]);
return rows[0]["ip"];
} else {
return false;
}
});
}
connection.query 是一个异步函数,因此 CheckStorage 在 connection.query 完成之前返回。您需要将处理查询结果的回调函数传递给 CheckStorage,然后在查询完成后调用该函数。
function CheckStorage(Host, Slots, SSLocation, callback) {
connection.query("SELECT * FROM `machines` WHERE `shost` LIKE '" + Host + "' AND `location` LIKE '" + SSLocation + "' AND `slotsa` >= " + Slots + "", function(err, rows, fields) {
if(rows[0]) {
console.log(rows[0]["ip"]);
if (typeof callback == "function") {
callback(rows[0]["ip"]);
}
}
});
}