Node.js 如何在nodejs mysql多sql查询中获得最终结果

Node.js 如何在nodejs mysql多sql查询中获得最终结果,node.js,express,node-mysql,Node.js,Express,Node Mysql,除了使用asyncjs,我如何才能优雅地获得最终结果 当前代码不优雅,还有其他方法吗 非常感谢 exports.index = function(req, res){ connection.query('select * from ued_task where taskState=0 and isQ=0 order by taskId desc', function(err, tasks, fields) { tasks.forEach(function(task, in

除了使用asyncjs,我如何才能优雅地获得最终结果

当前代码不优雅,还有其他方法吗

非常感谢

exports.index = function(req, res){
    connection.query('select * from ued_task where taskState=0 and isQ=0 order by taskId desc', function(err, tasks, fields) {
        tasks.forEach(function(task, index){
            task.userIds = (task['UD']+task['UI']+task['builder']).replace(/\,+/g,',').replace(/\,$/, '').split(',');
            task.users = [];
            task.userIds.forEach(function(single) {
                connection.query("select * from user where userId=" + single, function(err, rows, fields) {
                    task.users.push({
                        'name' : rows[0].name,
                        'ename' : rows[0].userName,
                        'position' : rows[0].position
                    });
                    if(index === tasks.length-1){
                        if (err) throw err;
                        console.log(tasks);
                        res.render('index', { 
                            title: 'task sys',
                            tasks: tasks,
                            moment: moment
                        });
                    }
                });
            });
        });
    });
};

我被编辑了

我的描述是错误的,不是上次的结果,这是最终的结果,就像我的新更新代码一样,谢谢。
exports.index = function(req, res){

    var result = {};
    result.title = 'task sys';
    result.moment = moment;

    var f3 = function(single){

        connection.query("select * from user where userId=" + single, function(err, rows, fields) {
            task.users.push({
                'name' : rows[0].name,
                'ename' : rows[0].userName,
                'position' : rows[0].position
            });
            if(index === tasks.length-1){
                if (err) throw err;
                console.log(tasks);
                res.render('index', result);
            }
        });

    }

    var f2 = function(task, index){
        task.userIds = (task['UD']+task['UI']+task['builder']).replace(/\,+/g,',').replace(/\,$/, '').split(',');
        task.users = [];
        task.userIds.forEach(f3);
    }

    var f1 = function(cb){
        var sql = 'select * from ued_task where taskState=0 and isQ=0 order by taskId desc'
        connection.query(sql, function(err, tasks, fields) {
            result.tasks = tasks;
            tasks.forEach(f2);
        }); 
    };

    f1();

};