2017-03-29 2 views
0

Jeder Benutzer hat einige Profis in Array:Wie listet man die Array-Eigenschaften eines Objekts sortiert auf?

users idxxx 
      -A 
      -prof: name: x 
        name: y 
     idyyy 
      -B 
      -prof: name :y 
        name :z 
        name :x 

wie namentlich um prof Arrays Listen sortieren.
so etwas wie:

prof list: 
x (2)    
y (2)    
z (1) 
+0

Die Struktur, wie sie in der Frage dargestellt wird, ist nicht gültig. Sie können keine Schlüssel innerhalb des Knotens mit doppelten Namen haben - ich erwähne das, weil selbst wenn sie unterschiedlich sind, es kein Array ist, es sei denn, sie wurden sequentiell nummeriert. In diesem Sinne können Sie ein Firebase-Array nicht sortieren oder sortieren. Es ist eine Sache und die Elemente können nicht einzeln aufgerufen werden. Siehe meine Antwort für eine Alternative. – Jay

Antwort

1

Sie sollten Ihr Datenmodell denormalize, dh einen speziellen Extra „proflist“ Knoten in Ihrer Datenbank erstellen, in dem Sie die Nummer des entsprechenden Berufs erhöhen (n), wenn Sie einen neuen Benutzer erstellen .

Eigentlich entspricht es der Art, wie Sie Ihr Problem erklärt haben.

verwenden Besser eine Transaktion wie hier detailliert https://firebase.google.com/docs/database/web/read-and-write#save_data_as_transactions

1

Eine bessere, alternative Struktur wird das Problem lindern.

user_01 
    -name: A 
    -professors 
    -YUik99j9s 
     name: "prof name 0" 
    -YJ89jk9sk 
     name: "prof name 1" 

dann in dem Knoten lesen

ref = "user_01/professors" 

und

orderBy:("name") 

Hinweis, dass der Professor Kind Schlüssel (-YUik99j9s und -YJ89jk9sk) mit Druck erstellt werden() oder je nach childByAutoId Plattform.

Verwandte Themen