2016-03-07 4 views
2

Я только начинаю с использования normalizr с Redux, и я застрял на том, что кажется мне простой проблемой, но я мог бы сделать это неправильно. Поэтому я хочу, чтобы нормализовать массив как это:Нормальный простой массив с normalizr

{ 
    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({ 
    ... 
}); 

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

ответ

2

Вы не должны определить статью. Убедитесь, что вы импортировали все из normalizr правильно. Я попробовал ваш код, и он дал мне ожидаемый результат:

import { normalize, Schema, arrayOf } 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'} 
    } 
    } 
} 
+0

Ok моя ошибка. Оказывается, я старался работать непосредственно с массивом статей, а не с объектом со свойством articles –

Смежные вопросы