将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); } });
}
- Nodejs Express多个callback错误
- 防止在NodeJS上双重运行
- error handling与嵌套callbackasynchronous瀑布
- Node.js的function与callbackdos't运行asynchronous
- 在下面的控制stream中使用响应之前,如何等待节点/快速应用程序中mongo findOne查询的响应
- 如何杀死node.js中的child_process – req.on close
- 'function foo(callback)'和'foo(arg1,arg2,function(err,data))'之间有什么区别?
- 何时使用callback和承诺?
- undefined不是一个函数Node.JS