2017-04-09 15 views
1

je reçois toujours l'erreur comme ceci:Redux ne peut pas lire le schéma Normalizr

Uncaught (in promise) TypeError: Cannot read property 'periodListSchema' of undefined

voici mon code:

mon schéma

import { schema, arrayOf } from 'normalizr'; 

export const periodSchema = new schema.Entity('activePeriod'); 
export const periodListSchema = new schema.Array(periodSchema); 

Mon action Normaliser

then(response => { 
      console.log('normalized response', normalize(response.schema.periodListSchema)); 

et ceci est ma réponse

{"activePeriod":[{"periodID":2,"periodName":"Periode 27","startDate":"2016-11-11","endDate":"2016-12-11","remark":"Periode Alpha 27","isActive":"1"}],"status":"OK"} 

bibliothèque Mon Normalzr est v3.2.2 quelqu'un peut me aider à trouver ce qui ne va pas ?, je suis en train de comprendre cela.

Répondre

3

1) Uncaught (in promise) TypeError: Cannot read property 'periodListSchema' of undefined Cette erreur a été lancée parce que response n'a pas schema propriété, donc vous ne pouvez pas obtenir periodListSchema propriété de undefined

2) Pour normaliser la réponse, vous devez passer ensemble de périodes de normalize Func, et spécifiez schema. En outre, si vous avez le nom de la propriété id non standart, vous devez spécifier le nom dans les options du constructeur schema.Entity, via idAttribute.

DEMO webpackbin

Exemple

import { schema, normalize } from 'normalizr'; 

export const periodSchema = new schema.Entity(
    'activePeriods', 
    {}, 
    { idAttribute:'periodID' } 
); 
export const periodListSchema = [periodSchema]; 

const response = {"activePeriod":[{"periodID":2,"periodName":"Periode 27","startDate":"2016-11-11","endDate":"2016-12-11","remark":"Periode Alpha 27","isActive":"1"}],"status":"OK"}; 

console.log(
    normalize(response.activePeriod, periodListSchema) 
); 

Résultat

{ 
    "entities": { 
    "activePeriods": { 
     "2": { 
     "periodID": 2, 
     "periodName": "Periode 27", 
     "startDate": "2016-11-11", 
     "endDate": "2016-12-11", 
     "remark": "Periode Alpha 27", 
     "isActive": "1" 
     } 
    } 
    }, 
    "result": [ 
    2 
    ] 
} 
+0

i eu cette erreur: Erreur: entrée inattendue donnée à normaliser. Type attendu à être "objet", trouvé "indéfini". à normaliser – ukiyakimura

+0

je fixe déjà cela. oublie de spécifier plus. ma réponse.data.activePeriod. thx de toute façon – ukiyakimura