2015-01-12 31 views
13

miei dati Firebase simile a questa:interrogazione Firebase da intervallo di date

{ 
    "lambeosaurus": { 
    "date" : 1420753443, 
    "length" : 12.5, 
    "weight": 5000 
    }, 
    "stegosaurus": { 
    "date" : 1429053443, 
    "length" : 9, 
    "weight" : 2500 
    } 
} 

Sto cercando un modo per filtrare le date con un intervallo di date personalizzato. Ho visto alcuni esempi online in cui hanno richiesto una data, ma il timestamp è sempre stata la chiave che non è possibile nel mio caso.

La sezione rilevante è la documentazione può essere trovato qui: https://www.firebase.com/docs/web/guide/retrieving-data.html#section-queries

E 'importante che l'aggiornamento in tempo reale è ancora supportato. Voglio anche solo determinare il numero di tutti gli articoli che si adattano al criterio. Non sono interessato al punto dati per ogni nodo.

risposta

28

Sembra che è possibile utilizzare il metodo orderBychild() di ordinare tramite chiave o dei suoi beni (cioè weight, length o date). E se si concatenano che l'utilizzo di startAt() & endAt(), possiamo costruire la query che stai cercando:

var startDate = 14200000000; 
var endDate = 14300000000; 

ref.orderByChild("date").startAt(startDate).endAt(endDate) 
    .on("child_added", function(snapshot){ 
    console.log("got the data!", snapshot); 
    }); 
+0

C'è un modo per determinare il numero di volte che corrisponde al criterio di & "startAt" 'Endat', ma senza dover caricare ogni singolo oggetto. Cambiando da .on ('child_added') a .on ('value'), questo può essere ottenuto ma non si sincronizza più in tempo reale. – Paul

+1

Può essere esteso alle coordinate GPS? vale a dire. avere un 'startAt()' e 'endAt' su latitudine e longitudine? – Sauron

+0

ha funzionato per chiunque? –

Problemi correlati