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.
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() .
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.
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); });
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With