我想知道返回一堆 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) {
});
}
}
如何将第二个查询的每个重复选择中的行合并到可以以 JSON 形式返回的单个对象中?
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end(JSON.stringify(results));
}
});
}
});
最佳答案
询问并回答。
Async.js 实用程序有很多好东西,包括 map function和 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);
}
});
}
关于javascript - 将node-mysql结果行合并为node.js的单个JSON返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17913916/