Нормализация простого массива с помощью normalizr
Я только начинаю использовать normalizr с Redux, и я застрял на том, что кажется мне простой проблемой, но я могу сделать это неправильно. Поэтому я хочу нормализовать массив следующим образом:
{
articles: [
{id: 1, someValue: 'test'},
{id: 2, someValue: 'test2'}
]
}
В структуру, подобную этой:
{
result: {
articles: [1,2]
},
entities: {
articles: {
1: {someValue: 'test'},
2: {someValue: 'test2'}
}
}
}
Я пытался сделать это:
const article = new Schema('articles');
responce = normalize(responce, {
articles: arrayOf(article)
});
Но это дает мне структуру, которая выглядит следующим образом:
{
articles: {
entities: {},
result: {
0: {someValue: 'test'},
1: {someValue: 'test2'}
}
}
}
Который теперь не имеет массива идентификаторов статей. Я предполагаю, что я что-то упускаю здесь:
article.define({
...
});
Но не могу понять, что именно нужно идти туда в этом простом случае
1 ответ:
Вам не нужно определять артикль. Убедитесь, что вы импортировали все из
normalizrПравильно. Я попробовал ваш код, и он дал мне ожидаемый результат:import { normalize, Schema } from 'normalizr'; let response = { articles: [ { id: 1, someValue: 'test' }, { id: 2, someValue: 'test2' } ] }; const article = new Schema('articles'); response = normalize(response, { articles: [article] }); console.log(response);Вывод:
{ result: { articles: [1,2] }, entities: { articles: { 1: {someValue: 'test'}, 2: {someValue: 'test2'} } } }
Comments