Node.JS MySQL查询嵌套函数返回数组
这是我的密码。我正在使用该代码查找某些设备的最后坐标,并在谷歌地图中显示它们。但我需要首先能够从外部访问阵列,以便执行以下操作:Node.JS MySQL查询嵌套函数返回数组,node.js,variables,scope,return-value,anonymous-function,Node.js,Variables,Scope,Return Value,Anonymous Function,这是我的密码。我正在使用该代码查找某些设备的最后坐标,并在谷歌地图中显示它们。但我需要首先能够从外部访问阵列,以便执行以下操作: function searchCoords(){ var result = result; connection.query('SELECT * FROM monitoring', function(err, result){ if(err){ console.log(err); } return{ result
function searchCoords(){
var result = result;
connection.query('SELECT * FROM monitoring', function(err, result){
if(err){
console.log(err);
}
return{
result: result};
});
}
或
myModule.searchCoords()().result
但是,我仍然无法从外部函数访问数组(结果),更不用说从另一个模块了。
我一直在阅读闭包、作用域、嵌套函数、匿名函数等,但仍然找不到解决方案。我做错了什么?问题是,查询是异步的,所以它不能在正常流中返回值。如果您在调用searchCoords时传递了一个函数,那么该函数可以在返回结果后调用——这可能是在长时间延迟之后。这对于防止程序流在潜在的长时间操作过程中被阻塞是必要的
myModule.searchCoords().result
谢谢,这很有效,现在我可以从外部调用变量,并将其显示为:database.searchCoords(函数(resultsObject){resultsObject.result;});还有一件事我想做。。。有没有一种方法可以将回调函数转换成一个返回与结果完全相同的变量,这样我就可以从google maps api调用它,比如:
variable[0][1]
我不确定您的确切意思-我想您可能应该问一个关于堆栈溢出的问题;)
// accept a callback function to execute after getting results...
function searchCoords(callback){
var result = result;
connection.query('SELECT * FROM monitoring', function(err, result){
if(err){
console.log(err);
}
// run the callback function, passing the results...
callback({result: result});
});
}
// call like this...
// pass a function accepting results object that will be executed as callback
// once results have been returned...
searchCoords(function(resultsObject){
console.log(resultsObject.result)
})