Рекурсивная функция для иерархии сотрудников (nodejs)

У меня есть данные в таблице в этом формате

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' }
                ]
               }
             ]
           }
         ]
       };
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
88
1

Ответы 1

Я не знаю, какую библиотеку вы используете для запроса сервера формы, поэтому я запрограммирую эти части с помощью 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, чтобы сделать это более эффективным в будущем.

Другие вопросы по теме