Массив объектов, не нормализующихся, как предполагалось, используя normalizr
Я пытаюсь нормализовать полученный ответ.Я могу нормализовать данные в соответствии с groupId для внешнего объекта, но я не могу сделать то же самое для массива во внешнем объекте, который содержит список администраторов с его свойствами.Я хотел преобразовать список в Объекты на основе их идентификаторов, но вместо этого Объекты дифференцируются в зависимости от их индекса.
schema.js
import { schema } from 'normalizr';
const groupAdministrator = new schema.Entity('groupAdministratorList' , {groups: {}}, { idAttribute: 'groupAdministratorId'});
export const groupSchema = {
groupAdministratorList: { groupAdministratorId: groupAdministrator}
};
export const groupsSchema = new schema.Entity(
'groups',
groupSchema,
{ idAttribute: 'groupId' }
);
reducer.js
import { normalize } from 'normalizr';
import { groupsSchema } from "./schema";
const { entities } = normalize(action.payload, groupsSchema);
if (!entities.groups) return state;
const newState = { groups: entities.groups };
return merge(state, newState, { deep: true });
Ниже приводится ответ, который я получаюиз API:
{
groupId: "uniqueId"
groupName: "someName"
groupAdministratorList: [
{
groupAdministratorId: "uniqueId1",
role: "someRole"
},
{
groupAdministratorId: "uniqueId2",
role: "someRole"
}
]
}
Вот что я получаю после нормализации:
uniqueId: {
groupId: "uniqueId"
groupName: "someName"
groupAdministratorList: {
0: {
groupAdministratorId: "uniqueId1",
role: "someRole"
},
1: {
groupAdministratorId: "uniqueId2",
role: "someRole"
}
}
}
Вот что я на самом деле хочу:
uniqueId: {
groupId: "uniqueId"
groupName: "someName"
groupAdministratorList: {
uniqueId1: {
groupAdministratorId: "uniqueId1",
role: "someRole"
},
uniqueId2: {
groupAdministratorId: "uniqueId2",
role: "someRole"
}
}
}