首页 > 代码库 > nodejs 数据库查询异步处理
nodejs 数据库查询异步处理
古人云:代码有问题,怎么办??找我啊,。。嘿嘿嘿
最近写代码遇到了这么一个问题在用nodejs连接数据库时出现了一个特别蛋疼的问题,我们先来看事例代码,我简化了
1 app.get(‘/select_kyjj‘,function(req,res){
2 3 4 client.query(str,function(err,data){
5 console.log(“这是查询里面“) 6 });
7 console.log (”这是查询外面”)
8
9 });
我们这个是nodejs 后台的代码,每次的打印出来的当然是
------这是查询外面
------这是查询里面
那为什么不是先查询查询里面再查询里面的嘛?当时我也入坑了,原因就是query在查询的时候他是异步的
1 client.query(str,function(err,data){ 2 length = data.length; 3 for(var i in data){ 4 num = i; 5 var flag = isGroup(data[i].name,ls_arr);//true 6 if(!flag){//没有分组 7 ls_arr.push(data[i].name); 8 client.query(‘select * from groud_qd where name ="‘+data[i].name+‘"‘,function(err,data1){ 9 datajson.push(data1); 10 }) 11 } 12 } 13 }); 14 15 var timer = setInterval(function(){ 16 if(num == length - 1){ 17 res.jsonp(datajson); 18 clearInterval(timer); 19 } 20 },500);
这里我就直接的插入代码,上面的我们需要遍历这个整个的数组,并且我们需要提取数据进行整合,最后将数据传出去;
这里我用的是事件监听,用setInterval监听我们的数据是否的整合完整,完整之后就将数据输出。
这里相当于我在这个后面不断的等待,循环达到我所需要的目的,最后解决这个异步的问题。
当然,方法有很多,希望大家能跟我分享分享,共同进步
nodejs 数据库查询异步处理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。