Нормализация простого массива с помощью 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({
...
});


Но не могу понять, что именно нужно идти туда в этом простом случае

686   1  

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

    Ничего не найдено.