Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Firebase query by date range

Tags:

My firebase data looks something like this:

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

I am looking for a way to filter the dates using a custom date range. I've seen some examples online where they have queried for date, but the timestamp has always been the key which isn't possible in my case.

The relevant section is the documentation can be found here: https://www.firebase.com/docs/web/guide/retrieving-data.html#section-queries

It's important that real time updating is still supported. I also only want to determine the number of all the items that fit the criterion. I am not interested in the data point for each node.

like image 211
Paul Avatar asked Jan 12 '15 18:01

Paul


People also ask

What is orderBy in firebase?

By default, a query retrieves all documents that satisfy the query in ascending order by document ID. You can specify the sort order for your data using orderBy() , and you can limit the number of documents retrieved using limit() .

What is timestamp in firebase?

firestore. Timestamp. A Timestamp represents a point in time independent of any time zone or calendar, represented as seconds and fractions of seconds at nanosecond resolution in UTC Epoch time. It is encoded using the Proleptic Gregorian Calendar which extends the Gregorian calendar backwards to year one.


1 Answers

Looks like you can use the orderBychild() method to order by child key or property (i.e. weight, length, or date). And if you chain that using startAt() & endAt(), we can construct the query you're looking for:

var startDate = 14200000000; var endDate = 14300000000;  ref.orderByChild("date").startAt(startDate).endAt(endDate)   .on("child_added", function(snapshot){     console.log("got the data!", snapshot);   }); 
like image 137
Keenan Lidral-Porter Avatar answered Sep 18 '22 06:09

Keenan Lidral-Porter