变量“ resultToReturn”未输出值

时间:2019-06-24 07:53:13

标签: javascript arrays

这是我的代码。我正在尝试从“ 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");

1 个答案:

答案 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);
    })
  }