У меня есть данные в таблице в этом формате
emp_id,emp_name,title,supervisor_id,supervisor_name
11,Anant,Business Unit Executive,8,abc
15,Raina,Analysis Manager Senior,11,Anant
16,Kumar,Conversion Manager,11,Anant
18,amit,Analyst Specialist,11,Anant
25,anil,senior engineer,18,amit
35,Pang Pang,senior engineer,25,anil
38,Xiang Xiang,UE engineer,25,anil
Я введу supervisor_id, и он вернет всех сотрудников под этим, а затем, продолжив это, пока мы не достигнем более низкого уровня, я хочу сделать это в node и sql-сервере с рекурсивной функцией.
Я хочу, чтобы эти данные были в таком иерархическом порядке.
var ds = { 'emp_id':11,
'name': 'Anant',
'title': 'Business Unit Executive',
'children': [
{ 'name': 'Raina','emp_id':15, 'title': 'Analysis Manager Senior' },
{ 'name': 'Kumar','emp_id':16, 'title': 'Conversion Manager' },
{ 'name': 'amit', 'emp_id':18, 'title': 'Analyst Specialist',
'children': [
{ 'name': 'anil','emp_id':25, 'title': 'senior engineer' ,
'children': [
{ 'name': 'Pang Pang','emp_id':35, 'title': 'engineer' },
{ 'name': 'Xiang Xiang', 'emp_id':38,'title': 'UE engineer' }
]
}
]
}
]
};





Я не знаю, какую библиотеку вы используете для запроса сервера формы, поэтому я запрограммирую эти части с помощью sudo.
async getEmployeesBySupervisorId(supervidor_id){
const employees = await <get-employees-query> // you may also need to map the results to your {emp_id, name, title} depending on your query library default to [] if no employees are found
return Promise.all(...employees.map(employee=>{
employee.children = await getEmployeesBySupervisorId(employee.emp_id)
}))
}
Это даст вам множество сотрудников с детьми до тех пор, пока они не перестанут быть найдены, Хотя это сработает, возникает множество запросов, но, возможно, вам будет лучше использовать sql и ORM, чтобы сделать это более эффективным в будущем.