Javascript nodeJs,运行两次sql可以将它们组合成json
我正在使用NodeJS构建api。 这是我的密码Javascript nodeJs,运行两次sql可以将它们组合成json,javascript,sql,json,node.js,Javascript,Sql,Json,Node.js,我正在使用NodeJS构建api。 这是我的密码 var keyword = req.body.keyword; var sql = "SELECT xxxx WHERE xxx"; connection.query(sql,function (err,row){ if(err) { res.json({"Error" : true}); } else { res.json({"Result" : row}); } }); 然后,我得到了结果 {
var keyword = req.body.keyword;
var sql = "SELECT xxxx WHERE xxx";
connection.query(sql,function (err,row){
if(err) {
res.json({"Error" : true});
} else {
res.json({"Result" : row});
}
});
然后,我得到了结果
{
"Result": [
{
"xxx": xxx,
"yyy": "yyyy"
}
]
}
但现在,我需要将许多sql结果组合成一个json
{"ResultA":[{"xxx","xxx" , "yyy":"yyyy"}] ,
"ResultB":[{"xxx","xxx" , "yyy":"yyyy"}] ,
"ResultC":[{"xxx","xxx" , "yyy":"yyyy"}] }
我是否可以将结果存储在sql的变量中,然后运行:
res.json({"ResultA" : a , "ResultB" :b , "ResultC":c});
为了得到结果
我试图复制代码并添加
res.write(",");
链接JSON,但它告诉我不能在结束后再写 您需要先收集整个响应,然后再将其发送回客户端。这意味着缓冲每个查询的输出。例如:
var results = [];
connection.query('SELECT xxx FROM yyyy', function(err, row) {
if (err)
result.push({ErrorA: true});
else
result.push({ResultA: row});
onFinish();
});
connection.query('SELECT xxx FROM yyyy', function(err, row) {
if (err)
result.push({ErrorB: true});
else
result.push({ResultB: row});
onFinish();
});
connection.query('SELECT xxx FROM yyyy', function(err, row) {
if (err)
result.push({ErrorC: true});
else
result.push({ResultC: row});
onFinish();
});
function onFinish() {
if (results.length === 3)
res.json(results);
}
如果不需要使用查询特定的结果键名称(例如,ResultA
,ResultB
,等等),并且结果顺序无关紧要,则可以简化此过程:
var results = [];
var queries = [
'SELECT xxxx FROM yyyy',
'SELECT xxxx FROM yyyy',
'SELECT xxxx FROM yyyy'
];
for (var i = 0; i < queries.length; ++i)
connection.query(queries[i], onResult);
function onResult(err, row) {
if (err)
results.push({Error: true});
else
results.push({Result: row});
if (results.length === queries.length)
res.json(results);
}
var结果=[];
变量查询=[
'从yyyy中选择xxxx',
'从yyyy中选择xxxx',
'从yyyy中选择xxxx'
];
对于(变量i=0;i
假设您使用的是节点mysql,请查看以下内容: