рекурсивная функция для сотрудника Heirarchy (nodejs) - PullRequest
0 голосов
/ 02 октября 2018

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

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, и он вернет всех сотрудников под этим, затем после продолжения этого, пока мы не достигнем более низкого уровня, я хочу сделать это в узле иSQL Server с рекурсивной функцией.

Я хочу, чтобы эти данные были в иерархическом порядке, как это.

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' }
                ]
               }
             ]
           }
         ]
       };

1 Ответ

0 голосов
/ 02 октября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...