2017-10-11 2 views
0

Ich versuche, die folgende Struktur aus Echtzeit-Datenbank migrieren zu Fires:Wie Struktur Unterknoten von Sammlungen in Firestore?

• Resources 
    o SENT 
      resId1 
       • name : xxxx 
       • url : xxx 
      resI2 
       • name …… 
    o ACCEPT 
      resId3 
      etc…… 
    o REFUSED 
      restIdn 
      etc…. 

So unter Root-Knoten „Ressourcen“ Ich habe einige Unterknoten haben (SENT, ACCEPT, Refused, ...), die enthalten Liste der Ressourcenelemente

Mit Firestor es scheint, dass ich nicht Untersammlung direkt unter Sammlung haben kann (Wenn ich versuche, diese Struktur mit Firestor in der Admin-Konsole ein Zwischendokument zu erstellen, wie ich brauche, zu reproduzieren:

Collection --> document --> SubCollection --> documents 

Hexe führen zu diese Struktur.

Resources --> SENT --> SENT --> resId1 {name: xxx, url: yyyy} 

So ist der Unterknoten „SENT“ zweimal dupliziert wird (eine für das Dokument und ein für die Untersammlung) Dies ist keine Verbesserung oder eine Vereinfachung bei allem, wenn ich mit Feuerbasis vergleichen Echtzeitdatenbank.
Vermisse ich etwas? Was ist der beste Weg für eine solche Datenbankstruktur?

Antwort

3

(2017.10.13 @ 11.00 Edited)

Es scheint, dass es zwei Strukturen, die für Sie arbeiten.

Option 1: Drei Stammsammlungen

Erstellen Sie drei Sammlungen an der Wurzel Ihrer Firestor Datenbank

  • resources-sent
  • resources-accept
  • resources-refused

Jeder enthält Dokumente.

Option 2: Ein Root Collection

Firestor für zusammengesetzte Abfragen ermöglicht, so dass Sie nur eine Sammlung an dem resources und fügen Sie einen type Parameter zu jedem Dokument namens root machen könnten, wo type einer der [sent, accept, refused] ist.

Dann können Sie Abfragen wie folgt tun:

// Get all sent resources 
db.collection("resources").where("type", "==", "sent").get() 

Aufgrund der Firestore in Indizes diese Abfrage erstellt wird immer schnell sein ‚!

Option 3: Untersammlungen.

eine Root-Sammlung erstellen resources enthält nur drei Dokumente genannt:

  • sent
  • accept
  • refused

Für jedes dieser Dokumente einen resources Untersammlung erstellen.

Also alle gesendeten Ressourcen zu erhalten:

// Get all sent resources 
db.collection("resources").doc("sent").collection("resources").get() 
+0

keine Ressourcen nicht die Wurzel Datenbank ist, ist es nur eine Sammlung (oder ein Knoten) bestimmter Elemente. Und ich habe vielleicht mehr als 3 Unterkategorien – toofoo

+0

Gehören Ressourcen zu einem anderen Dokument? Ich brauche mehr Informationen. –

+0

Keine Ressourcen ist ein erster Knoten nach dem root (wie eine Art von TABLE); Es gibt einige andere Wurzelknoten, der einzige Unterschied ist, dass dieser Knoten "Ressourcen" in Unterkategorien unterteilt ist (für das Beispiel Sent, Accept, etc .....) – toofoo

Verwandte Themen