将node-mysql结果行组合成node.js的单个JSON返回值

我想知道返回一堆JSON的最好方法,这是一些依赖mysql查询的结果。

app.get('/viewing/:id', function (req, res){ if(!req.cookies.user) { res.end('Requires Authenticated User'); } else { connection.query('SELECT blah blah where userId='+req.params.id, function (error, rows, fields) { 

现在我们有一堆行 – 让我说5,我需要通过每一个,并根据我刚刚得到的数据进行另一个MySQL查询。 所以我最终需要重复呼叫(我循环?)

  connection.query('SELECT id, firstName, lastName from users where id='+AN_ID_FROM_PRIOR_QUERY, function (error2, rows2, fields2) { }); } } 

如何将第二个查询的每个重复select的行合并为一个可以作为JSON返回的对象?

  res.writeHead(200, {'Content-Type': 'text/plain'}); res.end(JSON.stringify(results)); } }); } }); 

询问并回答。

Async.js实用程序有很多好东西,包括一个map函数和underscores.js帮助整理任何东西!

 app.get('/viewing/:id', function (req, res){ if(!req.cookies.user) { res.end('Requires Authenticated User'); } else { connection.query('SELECT something,somethingelse from mytable where userId = ?',[req.params.id], function (error, rows, fields) { async.map(rows, getUsers, function(err, results){ res.writeHead(200, {'Content-Type': 'text/plain'}); res.end(JSON.stringify(_.flatten(_.compact(results)))); }); }); } }); function getUsers(user, callback) { connection.query('SELECT id,firstName,lastName FROM users WHERE id = '+ user.otherId, function(err, info) { if(err) { console.log(err); return callback(err); } else { return callback(null, info); } }); 

}