2017-04-12 5 views
1

Ich habe zwei Entitäten. Kategorien und Produkte. Jedes Produkt kann viele Kategorien haben und jede Kategorie kann zu vielen Kategorien gehören. Ich möchte in der Lage sein, alle Produkte zurückzugeben und für jedes Produkt alle Kategorien, zu denen es gehört, und seine übergeordneten Kategorien zu haben. Ist der Datenspeicher eine gute Option für so etwas?Google-Datastore-Modellierung

Beispiel Produkte Antwort:

{ 
    id: 1, 
    name: "shoes", 
    categories: [{ 
     id:1, 
     ordinal:1 
    },{ 
     id:2, 
     ordinal:1 
    }] 
} 

Antwort

0

Ich nehme an, Sie bedeuten ‚Datastor‘, wo Sie ‚Datenfluß‘

schrieben

Es hängt davon ab, ob Sie auf Kategorien oder nicht später auf Basis abfragen mögen.

Falls Sie nicht auf Kategorien Abfrage müssen basierend

Ich würde vorschlagen, Ihre Kategorien in einem Modell zu definieren (mit den entsprechenden Eltern/Kind-Beziehungen) und dann Zugabe jede Kategorie zu einem Produkt in einem LocalStructuredProperty . Datenspeicher wird als Blob gespeichert, rekonstruiert jedoch das Kategorieentitätsmodell beim Abrufen des Produkts. Sie können auch eine JsonProperty mit einer serialisierten Zeichenfolge hinzufügen, die die Kategoriestruktur für jedes Produkt enthält. Zum Beispiel:

[ 
    0: { 
    category: 'Electronics', 
    subcategories: ['Smartphones', 'Telephones', 'Gadgets'] 
    }, 
    1: { 
    category: 'Apple', 
    subcategories: ['iPhone'] 
    } 
] 

Read more about the LocalStructuredProperty and the JsonProperty here (for Python client library).


Wenn Sie

dann auf Kategorien Abfrage müssen basierend Sie eine StructuredProperty verwenden sollten. Erstellen Sie ein Modell, um Ihre Kategorien und deren Vorfahrenpfade zu definieren. Dann fügen Sie der Product-Entität beim Instanziieren eine oder mehrere Kategorien (zusammen mit ihren Eltern) hinzu.

Die Entity Property Reference in der Datastore-Dokumentation enthält ein gutes Beispiel für die Implementierung (in Python, aber auch für andere Sprachen). Und hier ist, wie Sie filter for StructuredProperty values.

+0

Vielen Dank für die Antwort! Ja, ich meinte Datenspeicher. Ich muss Ereignisse nach ihren Kategorien abfragen. – chchrist