2013-12-25 2 views
0

как я могу получить окончательные результаты изящно, за исключением использования asyncjs.как получить окончательные результаты в nodejs mysql mutli sql query

текущий код не изящный, любой метод?

спасибо большое.

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 
         }); 
        } 
       }); 
      }); 
     }); 
    }); 
}; 

ответ

0
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(); 

}; 

я был отредактирован

+0

Мое описание неправильно, не последние результаты, это конечный результат, как мой новый код обновления, спасибо. – lolocoo

+0

я был отредактирован .. –

Смежные вопросы