Как нормализовать вложенный ответ с помощью нормализатора - PullRequest
1 голос
/ 23 апреля 2019

Я хотел бы нормализовать вложенный ответ данных JSON, который я получаю из API. Ответ данных содержит агентов, которые принадлежат к нескольким сменам. Отношения между сущностями являются ассоциацией «многие ко многим», поскольку «Сдвиг» может включать много агентов, а агент может принадлежать многим сменам. Итак, я наткнулся на эту утилиту нормализатора, где я попытался нормализовать дату в этой форме, чтобы я мог разобрать это проще.

Я пытался нормализовать эту форму

{
  entities : {
    shifts:[{...}],
    agents:[{...}]
  }
}
import { normalize, schema } from 'normalizr';
import stubData from './stubData';

const agent = new schema.Entity('agents', {});

const day_agents = new schema.Entity('day_agents', {
  agents: [agent]
});

const shift = new schema.Entity('shifts', {
  day_agents
});

const normalizedData = normalize(stubData, shift);

stubData:

"shifts": [{
        "id": 1,
        "name": "Shift 1",
        "start_time": "9:00",
        "end_time": "5:00",
        "day_agents": {
            "10/4/2019": {
                  "leaves": 1,
                  "agents": [
            {
                          "id": 1,
                          "name": "a",
                          "email": "a@b.co",
                          "group_id": 1,
                          "Leave": false
                      },
                      {
                          "id": 2,
                          "name": "b",
                          "email": "b@b.co",
                          "group_id": 1,
                          "Leave": false
                      }
                  ]
              },
            "11/4/2019": {
                "leaves": 1,
                "agents": [{
                        "id": 4,
                        "name": "c",
                        "email": "c@c.co",
                        "group_id": 2,
                        "Leave": true
                    },
                    {
                        "id": 5,
                        "name": "d",
                        "email": "d@d.co",
                        "group_id": 2,
                        "Leave": false
                    }
                ]
            }
    }
    }]

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