javascript - 在 Node.js 中获取嵌套 SQL 查询的空响应
问题描述
我有一个带有用户表的建筑物数据库,它可以有多个建筑物。我编写了一条路线,它接收用户 ID 并将注册给该用户的所有建筑物的详细信息发回。响应包括建筑物 -> 楼层 -> 房间。
调试代码可以让我在每个查询中返回有效数据,但最终响应始终为空。我知道这里有一些异步问题,似乎无法找出解决方案。
var rooms = []
var buildings_info = { Buildings:[] }
var floor_response = { Floors: [] }
var query = "Select Building_Id, Building_Address from Buildings WHERE ?? = ?";
var table = ["User_Id", user_id];
query = mysql.format(query, table);
connection.query(query, function(error, data){
for(let k=0; k<data.length; k++)
{
floor_response = { Floors: [] }
var query2 = "Select Floor_Id, Floor_Name from Floors WHERE ?? = ?";
var table2 = ["Building_Id", data[k].Building_Id]
query2 = mysql.format(query2, table2);
connection.query(query2, function(error, data2){
for(let l=0; l<data2.length; l++)
{
var room_response = { Rooms : [] }
var query3 = "Select Room_Id, Room_Name from Rooms where ?? = ?";
var table3 = ["Floor_Id", data2[l].Floor_Id]
query3 = mysql.format(query3, table3);
connection.query(query3, function(error, data3){
for(let m=0; m<data3.length; m++)
{
debug("for 3: "+data3[m].Room_Name)
room_response.Rooms.push({"Room_Id":data3[m].Room_Id, "Room_Name":data3[m].Room_Name})
debug("Rooms Data: "+JSON.stringify(room_response))
}
})
floor_response.Floors.push({"Floor_Id":data2[l].Floor_Id, "Floor_Name":data2[l].Floor_Name, "Rooms":room_response})
}
})
buildings_info.Buildings.push({"Building_ID":data[k].Building_Id, "Building_Address":data[k].Building_Address, "Floors":floor_response})
}
reply({"Buildings":buildings_info})
解决方案
推荐阅读
- python - Keras 的 fit() 不接受我的 numpy 数组数据
- intellij-idea - 使用 intellij 在远程系统上修改/构建/索引代码库
- flutter - 如何在 Flutter 中绘制具有边框半径的自定义矩形?
- c - C:将二维数组作为函数参数传递,并获取存储在参数地址中的结果
- c++ - 我可以在函数调用上使用 std::lower_bound 而不是迭代器吗?
- python - 如何在 seaborn 多面网格图中更改图例的位置
- reactjs - 为什么段落元素在首次加载时不呈现组件的状态?
- javascript - 使用Node js从firebase auth中检索多个用户信息
- python - 根据其他列 ID 从现有数据框中获取新熊猫数据框中的加权平均汇总数据列
- xml - XML 到 DTD 错误:文档类型声明必须格式正确