【问题标题】:Multiple queries in a single api单个 api 中的多个查询
【发布时间】:2018-01-24 09:16:53
【问题描述】:

我正在尝试在 nodejs 中编写一个带有两个查询的 api,应该合并从查询中获取的数据,并且应该从服务器发送单个 json 响应。我尝试了以下方式,但不知何故我得到了空值。

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));
})

【问题讨论】:

    标签: mysql node.js


    【解决方案1】:

    试试这段代码

    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));
        });
    
    });
    

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      你的代码应该是这样的。

      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));
          })
          })
      
      })
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-16
        • 1970-01-01
        • 1970-01-01
        • 2019-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多