2017-08-16 9 views
0

2つのクエリを持つnodejsにapiを書き込もうとしていますが、クエリからフェッチされたデータをマージし、1つのjsonレスポンスをサーバから送信する必要があります。私は次の方法を試みたが、何とか私はnull値を得ている。単一のapiで複数のクエリ

app.get('/api/task_details',function(req,res,err){ 
    var sql = "select * from users inner join user_level_task on users.user_id=user_level_task.user_id inner join tasks on tasks.task_id = user_level_task.task_id where task_name = 'game'"; 
    var sql2="select * from tasks where task_name='game'"; 
    var res1 = '',res2=''; 
    db.select(sql,function(err,data){ 
     var res1 =data; 
    }) 

    db.select(sql2,function(err,data){ 
     var res2 = data; 
    }) 

    res.end(JSON.stringify(res1+res2)); 
}) 

答えて

1

コードは次のようになります。

app.get('/api/task_details',function(req,res,err){ 
    var sql = "select * from users inner join user_level_task on users.user_id=user_level_task.user_id inner join tasks on tasks.task_id = user_level_task.task_id where task_name = 'game'"; 
    var sql2="select * from tasks where task_name='game'"; 
    var res1 = {} 
    db.select(sql,function(err,data1){ 
     db.select(sql2,function(err,data2){ 
     res1.data1= data1; 
     res1.data2=data2; 
     res.end(JSON.stringify(res1)); 
    }) 
    }) 

}) 
0

これはあなたの

のためにお役に立てば幸いコード

const mysql = require('mysql'); 
const express = require('express'); 
const app = express(); 
var async = require('async'); 
const connection = mysql.createConnection({ 
    host: 'localhost', 
    user: 'xxxx', 
    password: 'xxxx', 
    database: 'Name of the DataBase' 
}); 

connection.connect(); 
app.get('/api/task_details', (req, res) => { 
async.parallel([ 
function (callback) 
{ 
setTimeout(function(){ 
connection.query(SELECT * FROM users inner join user_level_task on users.user_id=user_level_task.user_id inner join tasks on tasks.task_id = user_level_task.task_id where task_name = 'game', (error, data1) => { 
     if(error) => { 
      console.log(error) 
     } 
     callback(null,data1); 
    }); 
    },200); 
} 

function (callback) 
{ 
setTimeout(function(){ 
connection.query(SELECT * FROM tasks where task_name='game',(error, data2) => { 
     if(error) => { 
      console.log(error) 
     } 
     callback(null,data2); 
    }); 
},100); 
    } 
    ], 
    function(err,results){ 
     res.end(JSON.stringify(results)); 
    }); 

}); 

のこの作品をお試しください

関連する問題