这是我的代码。我正在尝试从“ returnQueryToGlobal”函数发送本地“结果”变量,但在控制台中显示为“未定义”。
我尝试了一切,哈哈!
我正在OVH的简单VPS上运行它。
export function dbQuery(sql){
var dbArguments = [];
for (var i in arguments)
{
if (i == 0) continue;
var escapeVarchar = mysql_real_escape_string(arguments[i]);
console.log(escapeVarchar);
dbArguments.push(escapeVarchar);
}
var resultToReturn;
function returnQueryToGlobal(err, result)
{
if (err) throw err;
resultToReturn = result;
}
con.query(sql, dbArguments, returnQueryToGlobal)
console.log(resultToReturn);
var dbArguments = null;
}
dbQuery("SELECT name FROM accounts");
答案 0 :(得分:0)
从外观上,您将丢失对resultToReturn
的引用。试试这个:
con.query(sql, dbArguments, (err, result)=>{
if (err) throw err;
resultToReturn = result;
})
对resultToReturn
的引用在函数体内仍应可用。
另外,由于这是异步操作,因此在记录undefined
时仍然会得到它。您需要处理回调中的值。
由于您需要将结果返回到另一个函数,因此需要传递另一个回调,并以reult作为参数,以便在所需的上下文中可用。
//calling the function
dbQuery(sql, (resultsToReturn)=>{
//do stuff with the value of the result
})
//declaring the function
function dbQuery(callback)
{
con.query(sql, dbArguments, (err, result)=>{
if (err) throw err;
callback(result);
})
}