programing

Javascript 개체 형식 조작

subpage 2023. 8. 2. 09:04
반응형

Javascript 개체 형식 조작

나는 팀 아이디와 함께 특정 팀 아래의 모든 선수들을 받기 위해 노력하고 있습니다.

제 질문은 다음과 같습니다.

SELECT player.team_id, team.name, player.first_name, player.last_name FROM player, team WHERE player.team_id = team.id AND player.league = "League 1";

다음과 같이 결과(팀별로 저장)를 가져와 고객에게 보냅니다.

res.send({
        success: true,
        teams: teams
      });

엔드포인트에 도달하면 다음과 같이 반환됩니다.

enter image description here

이 날짜를 고유한 팀별로 하나의 필드가 있는 날짜로 다시 포맷하려고 합니다.팀의 각 선수 이름에 액세스할 수 있도록 내부에 선수 필드(어레이)가 있어야 합니다.제가 이 데이터를 어떻게 그런 형식으로 조작할 수 있는지 아는 사람 있나요?

예를 들어, 이 데이터 세트의 경우, 팀 개체 안에는 "전사"라는 이름의 필드가 하나만 있을 것입니다. 플레이어 배열 안에는 모든 사람의 이름이 들어 있습니다.

답을 따라 해봤는데, 이제는 실제 물건이 아닌 끈으로 돌려주는 것뿐입니다.

enter image description here

집계 및 json 함수를 사용할 수 있습니다.

select
    t.team_id,
    t.name,
    json_array_agg(
        json_object('first_name', p.first_name, 'last_name', p.last_name)
    ) as players
from teams t
inner join players p on p.team_id = t.team_id
group by t.team_id, t.name

결과 집합의 세 번째 열은 플레이어를 나타내는 json 객체와 키를 포함하는 json 배열입니다.first_name그리고.last_name.

또한 전체 결과 집합을 다른 수준의 집계와 함께 json 어레이로 집계할 수 있습니다.

select json_array_agg(
    json_object('team_id', team_id, 'name', name, 'players', players) 
) res
from (
    select
        t.team_id,
        t.name,
        json_array_agg(
            json_object('first_name', p.first_name, 'last_name', p.last_name)
        ) as players
    from teams t
    inner join players p on p.team_id = t.team_id
    group by t.team_id, t.name
) t

편집:json_array_agg()에서는 버전 10.5.0부터만 사용할 수 있습니다.이전 버전에서는 문자열 연결을 사용할 수 있습니다.

select
    t.team_id,
    t.name,
    concat(
        '[',
        group_concat(json_object('first_name', p.first_name, 'last_name', p.last_name)),
        ']'
    ) as players
from teams t
inner join players p on p.team_id = t.team_id
group by t.team_id, t.name

언급URL : https://stackoverflow.com/questions/62505018/manipulating-javascript-object-format

반응형