Reputation: 645
My data:
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. I have tried the below code and it didn't work.
var rootRef1 = firebase.database().ref().child("Users").orderByChild('type')
.startAt("2019-01-05").endat("2019-01-10");
rootRef1.on("child_added",snap => {
var name=snap.child("fullname").val();
var email= snap.child("email").val();
var address= snap.child("address").val();
var contact= snap.child("contact").val();
var status=snap.child("status").val();
var type=snap.child("type").val();
var date=snap.child("regdate").val();
console.log(name);
});
This does not seem to work. Any ideas?
Upvotes: 9
Views: 14794
Reputation: 599581
You're trying to filter on date values, but you're ordering on type
That's not how Firebase Database queries work: you always first order on a property/value, and then filter on that same property/value.
So to order/filter on regdate
:
firebase.database().ref().child("Users").orderByChild('regdate')
.startAt("2019-01-05").endAt("2019-01-10");
Note that I also changed endat
to endAt
(with an uppercase A
). The endat
you had, will give a syntax error.
You're now ending at 2019-01-10
. Since your actual values include a time, they will all fall right after this value. If you also want to include the users who registered on 2019-01-10
itself, use:
firebase.database().ref().child("Users").orderByChild('regdate')
.startAt("2019-01-05").endAt("2019-01-10 23:59:59");
Upvotes: 16