有没有一种方法,可以在将两个查询的结果发送回用户之前(使用node和express来组合?)>

问题描述 投票:0回答:1

Lemme解释:

问题:

我需要返回一个带有如下对象的数组:

[
   {
      region: region, 
      towns: [multiple towns]
   }, 
   {
      region: region, 
      towns: [multiple towns]
   }, 
   {
      region: region, 
      towns: [multiple towns]
   }
]

此刻,正在返回一个空数组[]

这是我的代码:

serve.get('/info', cors(corsOptions), (req,res)=>{
    let result=[]; //create array to store data
    dbConn.query(
        `SELECT DISTINCT region FROM address region`, //first query
        (error, rows)=>{
            if(!error){// BEGIN IF FOR FIRST QUERY
                // WHEN THERE IS NO ERROR
                for(let i=0; i<rows.length; i++){// iterate trough result and get all towns in that region
                    let region= rows[i].region;
                    dbConn.query(
                        'SELECT DISTINCT town FROM address WHERE region=? ORDER BY town',// SECOND QUERY
                        [region],// GET TOWNS OF CURRENT REGION
                        (error, rows)=>{
                            if(!error){// IF FOR SECOND QUERY
                                //when there is no error
                                result.push({divnum: division, blocks: rows})// push details into array in desired format
                            }else{// END IF
                                //when there is an error
                                saveError(error);// FUNCTION TO LOG ERROR
                                res.send(error);
                            }// END ELSE
                        }// END CALLBACK
                    );
                }// END FOR-LOOP
                res.send(result);// Send result
            }else{// END IF FOR FIRST QUERY
// WHEN THERE IS AN ERROR
saveError(error);
                res.send(error);
            }
        }
    )
});//END SERVE

我确实意识到正在返回一个空数组,因为程序在执行任何操作之前没有完全等待查询的任何结果。

为了获得所需的结果,我需要修改什么?

ie:

[
   {
      region: region, 
      towns: [multiple towns]
   }, 
   {
      region: region, 
      towns: [multiple towns]
   }, 
   {
      region: region, 
      towns: [multiple towns]
   }
]

Lemme解释:问题:我需要返回一个带有如下对象的数组:[{region:region,towns:[multiple towns]},{region:region,towns:[multiple ...

mysql node.js express
1个回答
0
投票
事实证明,此问题已在此处提出并回答:
© www.soinside.com 2019 - 2024. All rights reserved.