Как преобразовать плоские многоотраслевые данные в иерархический JSON?

[
  {
    "id": "a",
    "pid": "a",
    "name": "AA",
  },
  {
    "id": "b",
    "pid": "a",
    "name": "BB",
  },
  {
    "id": "c",
    "pid": "a",
    "name": "CC",
  },
  {
    "id": "x",
    "pid": "b",
    "name": "XX",
  }
]

Выше приведены данные, которые я получил из базы данных. У каждого человека естьid иpid, pid указывает на человека более высокого уровня человекаid, Если человек имеет самый высокий уровень, тоid равняетсяpid.

Я хочу преобразовать необработанные данные в иерархический JSON, например так:

[
  {
    "id": "a",
    "name": "AA",
    "child": [
      {
        "id": "b",
        "name": "BB"
        "child": [
          {
            "id": "x",
            "name": "XX"
          }
        ]
      },
      {
        "id": "c",
        "name": "CC"
      }
    ]  
  }
]

Я использую Node.js.

Ответы на вопрос(2)

Ваш ответ на вопрос