87,910
社区成员
发帖
与我相关
我的任务
分享
我在函数外定义一个全局变量的数组来接收每次查询的得到的结果,然后再把这个结果response回去;由于Node.js是异步i/o的,还没等到查询结果出来就执行了后面response的代码,导致一直返回为null。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
(在sql查询的函数的回调函数里可以response对应查询到的数据。但是不能response循环多个sql查询的结果集)
代码贴不上来,工作的机子没网络,只把代码的逻辑大概写下
for(var i=0;i<len;i++){
var sql='select '+len[i]+' from user';//每个sql需要匹配的字段是len数组中的一个元素,这不是原来的sql,算是相似的例子
dbc.query(sql,function(err,data){
//data是一个sql查询得到的结果
});
}
//本来想着在返回data的回调里用全局的一个数组push这些数据的,结果返回为空。求解决办法或者思路,自己折腾很久没搞出来。
var list=[];
for(var i=0;i<len;i++){
//每个sql需要匹配的字段是len数组中的一个元素
var sql='select '+len[i]+' from user';
(function(sql,i,len){
dbc.query(sql,function(err,data){
//data是一个sql查询得到的结果
list.push(data);
if(i==len-1){
callback(list);
}
});
}(sql,i,len);
}