2016-03-07 1 views
2

Je commence juste à utiliser normalizr avec Redux et je suis coincé sur ce qui me semble être un problème simple mais je pourrais faire ce qui ne va pas. Je veux donc normaliser un tableau comme celui-ci:Normaliser un tableau simple avec normalizr

{ 
    articles: [ 
    {id: 1, someValue: 'test'}, 
    {id: 2, someValue: 'test2'} 
    ] 
} 

dans une structure comme celle-ci:

{ 
    result: { 
    articles: [1,2] 
    }, 
    entities: { 
    articles: { 
     1: {someValue: 'test'}, 
     2: {someValue: 'test2'} 
    } 
    } 
} 

J'ai essayé de faire ceci:

const article = new Schema('articles'); 
responce = normalize(responce, { 
    articles: arrayOf(article) 
}); 

Mais cela me donne une structure ressemble à ceci:

{ 
    articles: { 
    entities: {}, 
    result: { 
     0: {someValue: 'test'}, 
     1: {someValue: 'test2'} 
    } 
    } 
} 

qui n'a maintenant aucun tableau d'identifiants d'article. Je suppose que je suis absent quelque chose ici:

article.define({ 
    ... 
}); 

mais ne peut pas comprendre ce qui doit aller dans ce cas simple

Répondre

2

Vous ne devez pas définir l'article. Assurez-vous que vous avez importé tout de normalizr correctement. J'ai essayé votre code et il m'a donné le résultat attendu:

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); 

Sortie:

{ 
    result: { 
    articles: [1,2] 
    }, 
    entities: { 
    articles: { 
     1: {someValue: 'test'}, 
     2: {someValue: 'test2'} 
    } 
    } 
} 
+0

Ok mon erreur. Il s'est avéré que j'essayais de travailler directement sur le tableau d'articles plutôt que sur un objet avec une propriété d'articles –