2016-05-05 9 views
2

Ich habe eine Struktur wie folgt aus:, die alle angegebenen Elemente in ‚Array‘ enthält

users 
- user1 
    - name: 'Bob' 
    - age: 25 
    - posts 
     - bobPost1 
      - text: 'Lorem ipsum...' 
      - tags 
      - web: true 
      - programming: true 
      - school: true 
     - bobPost2 
      - text: 'Lorem ipsum dolor...' 
      - tags 
      - web: true 
      - design: true 
      - school: true 
     - bobPost3 
      - text: 'Sample text...' 
      - tags 
      - web: true 
      - programming: true 

Ich möchte alle Bobs Beiträge von Tags abzurufen. Zum Beispiel "Web" und "Schule". Ergebnis sollte nach post1 und post2 sein. Ist es möglich, dies nur mit Firebase zu erreichen oder sollte ich alle seine Posts bekommen und sie dann filtern?

Antwort

1

Sie müssen einen Daten-Snapshot der gesamten post egal was, aber zum Glück ist das nicht eine Menge von Daten zu kümmern.

var ref = new Firebase("https://docs-examples.firebaseio.com/users/user1/posts"); 
ref.once("value", function(snapshot) { 
    // Gets everything under "posts", iterates each post 
    snapshot.forEach(function(childSnapshot) { 
     // "bobpost1", "bobpost2", etc 
     var key = childSnapshot.key(); 
     // Data underneath bobpost# 
     var childData = childSnapshot.val(); 

     // Iterates through tags 
     for(i in childData.tags) { 
      // Do/check something 
      // If post contains all specified tags, then store key somewhere 
     } 
    }); 
}); 

Sie durchlaufen die Post alle forEach verwenden und dann den Namen des Post innerhalb key und die Daten innerhalb childData speichern.

childData wird wie folgt aussehen: dabei einigen Scheck

- text: 'Lorem ipsum dolor...' 
- tags 
    - web: true 
    - design: true 
    - school: true 

Dann für jede Schleife durch tags mit einem regelmäßigen JavaScript iterieren. Ich empfehle, die key in einem Array zu speichern, wenn alle Tags gefunden werden oder was auch immer Sie suchen.

Beachten Sie, dass der Firebase-Aufruf asynchron ist und die Daten nach dem Aufruf .once nicht immer bereit sind. Führen Sie alle Aktionen innerhalb des Rückrufs aus.

Firebase | forEach

Verwandte Themen