Redux normalizr - verschachtelte API-Antworten

8

Wie kann ich normalizr verwenden, um mit verschachtelten standardisierten umzugehen? JSON API Antworten, die Schlüssel sind über den { data: ... } Standard?

Zum Beispiel ein Book

%Vor%

Wie würde ich Schemata entwerfen, um mit dem verschachtelten Datenschlüssel umzugehen?

    
AndrewMcLagan 01.07.2016, 13:53
quelle

2 Antworten

3

Ich glaube, was Sie suchen, ist die Verwendung der Funktion assignEntity , die in den Optionen von normalize übergeben werden kann. In diesem Fall können wir gegebenenfalls die redundanten data -Eigenschaften herausfiltern und direkt zu den darunter liegenden Werten gehen.

Effektiv assignEntity lassen Sie steuern, wie jeder Schlüssel der Daten normalisiert wird. Sehen Sie sich hier an, um mehr darüber zu erfahren, wie es funktioniert.

Ich stelle das als Demonstration zusammen, schaut euch um: Ссылка . Hier ist ein Ausschnitt:

%Vor%

Siehe auch Ln 29, wo das Array von characters einige Objekte hat, deren Informationen in data verschachtelt sind, und einige ohne. Alle sind normalisiert.

Ich habe auch einige Teile hinzugefügt, um zu zeigen, wie es mit Arrays und tief verschachtelten Daten funktioniert, siehe das country -Modell in publisher .

Mit den zur Verfügung gestellten Daten benötigen Sie einen Slug aufgrund der Abwesenheit von IDs, die jedes Schema auch im Beispiel enthält.

Normalizr ist fantastisch, ich hoffe, dass hilft ein wenig mehr darüber zu erklären:)

    
horyd 04.07.2016, 16:58
quelle
6

Für jede Entität in Ihrer Antwort sollten Sie ein eigenes Schema erstellen. In Ihrem Beispiel haben wir drei Entitäten: books , authors und publishers :

%Vor%

Wenn eine Entität verschachtelte Daten enthält, die normalisiert werden sollen, müssen wir das Schema define method of it verwenden. Diese Methode akzeptiert ein Objekt mit Verschachtelungsregeln. Wenn wir publisher und author Requisiten von book entity, wir sollten ein Objekt an define function mit derselben Struktur wie unsere Antwort übergeben:

%Vor%

Jetzt können wir unsere Antwort normalisieren:

%Vor%     
1ven 01.07.2016 14:24
quelle