【发布时间】:2022-01-23 17:09:10
【问题描述】:
我正在编写一个代码,该代码从节点应用程序中的 mssql 服务器获取 Json 数据。 场景是:
- 我在第一次 API 调用时根据主管的用户名获取经理列表,每个经理都有一个用户名。
- 基于该用户名,我运行一个递归函数来遍历数据库以获取他们的子经理。等等。
最终目标:将集体数据返回到 JSON 响应中 我想要的输出应该是:
{
Username:"Head-manager Username",
children:[
{
Username:"manager Username",
children:[{
{
Username:"Sub-manager Username",
children:[]}
}]
.
.
.
}
]
}
我的代码:
function getTreeData(dataset, newObj = {}) {
return dataset.map(async (employee, index) => {
let query = `SELECT [Username], [First Name], [Last Name] FROM TBL_M_FACT_EMPLOYEE_CENTRAL_ACTIVE WHERE [Reporting Manager User Sys ID] = '${employee.Username}'`;
let data = await config.sequelize.query(query, {
type: config.sequelize.QueryTypes.SELECT,
});
newObj={...newObj,data}
console.log("--------------------------");
console.log(query);
// console.log(data);
console.log(newObj)
console.log("--------------------------");
if(data.length === 0){
return newObj
}else{
getTreeData(data);
}
});
}
authRouter.get("/getEmployeeData", async (req, res, next) => {
try {
console.log("Initi");
let sql_Query = `SELECT [Username], [First Name], [Last Name] FROM TBL_M_FACT_EMPLOYEE_CENTRAL_ACTIVE WHERE [Reporting Manager User Sys ID] = 'T502217'`;
let result = await config.sequelize.query(sql_Query, {
type: config.sequelize.QueryTypes.SELECT,
});
console.log("Loop started Finally");
getTreeData(result);
res.status(200).json({
username: "T502217",
chilren: result,
});
} catch (error) {
console.log(error);
}
});
【问题讨论】:
-
好的。你有问题吗?这段代码不符合您的预期吗?
-
不,我什至不确定我的代码是否正确
-
请阅读asking good questions。我不知道您的代码是否正确而无法运行。和search 有关 SO 的相关主题。这是一个常见的问题。
-
我在那里有点匆忙。我绝对可以看到为什么这段代码不会工作的几个原因。您不会从递归调用中返回任何内容,而只会从您的基本调用中返回。并且您映射异步调用而不使用
Promise.all或其他方式来组合它们。
标签: javascript node.js api recursion