nodejsmysql回调地狱

nodejsmysql回调地狱,mysql,node.js,asynchronous,callback,Mysql,Node.js,Asynchronous,Callback,我在nodejs和mysql中使用了async从数据库中注入数据 所以我无法将mysql结果中的数据传递到mysql端以打印出来 请参阅它所解释的代码 var users = [] ; .on('result', function(user,callback) { async.waterfall([ function(cb){ get_comm(user.post_id ,function(moredata){ us

我在nodejs和mysql中使用了async从数据库中注入数据

所以我无法将mysql结果中的数据传递到mysql端以打印出来

请参阅它所解释的代码

    var users = [] ;

      .on('result', function(user,callback) {
    async.waterfall([
    function(cb){
        get_comm(user.post_id ,function(moredata){

            user.moredata = moredata;
            users.push(user);
            cb(users);

        })
    },

    ],function(users , cb){

    console.log(users); // it prints out successfully 
    });


})
.on('end', function() {
  if (connectionsArray.length) {
    pollingTimer = setTimeout(pollingLoop, POLLING_INTERVAL);
                console.log(users); // it prints out empty array [] !!

 updateSockets({
      users: users // empty array [] !!
    });


  }
});

我不确定瀑布对您来说是否是最好的功能,如果您确实有一堆用户ID,您还可以使用每个或每个系列

例如:

userIDs = [1,3,42,23];
users = [];
async.each(users, function( user, callback) {
    get_comm(user,function(moredata){
      user.moredata = moredata;
      users.push(user);
      callback(users);
    })
  }
  }, function(err){
  if( err ) {
    console.log(err);
  } else {
    console.log(users);
  }
});
试试看,我不确定这是你想要的,你的问题很难理解

 users =[] ;
.on('result', function(user) {
    async.waterfall([
    function(cb){get_comm(user.post_id , function(comms){

        user.comm = comms;
        users.push(user);
        cb(users);
    })
    },
    ],function(users ,cb){

        console.log(users); // it prints out
    });

})
.on('end', function() {
  if (connectionsArray.length) {
    pollingTimer = setTimeout(pollingLoop, POLLING_INTERVAL);
 updateSockets({
      users: users // empty []; !!

  });

  }
});

所以我希望在结果循环中查找后打印出所有数据,但结果循环中的数组已满,并且已清空

我只是想知道如何将回调从async传递到另一个functionReplace console.log,并使用您的函数