node.js用mysql实现嵌套回复

L3ve 发布于 2014/07/07 14:38
阅读 525
收藏 0

主要还是node异步的问题,代码如下

attn.query({
            sql: 'select id from A'
        }, function (err, a) {
            var re = [];
            for (var i = a.length; i--;) {
                attn.query({
                   sql: 'select strContent from B where intId = :id',
                        params: {
                            id: a[i].id
                        }
                    }, function (err, b) {
                        re.push(b);
                    }
                );
            }
            setTimeout(function () { 
                console.log(re)
            }, 4000);            //因为是异步所以要这样才能获取到正确的值
            // callback([a, re]);

        }
    );



数据结构有点类似嵌套回复,从表A拿到父亲的ID,然后根据父亲的ID查找表B里面的全部子数据,不过因为异步,导致数据能取到,当回调时不知道咋弄,总不能延迟回调函数的调用吧
加载中
0
Arrowing
Arrowing
function (err, b) {
  re.push(b);
  if(i == 0){
    console.log(re);
  }
}

另外推荐使用async等第三方工作控制流模块。。。


Arrowing
Arrowing
回复 @L3ve : 加个闭包就好了
L3ve
L3ve
大哥..回调里取i值很危险呀...应该还是async可靠点 我查查看
返回顶部
顶部