Firebase 按日期过滤

Vin*_* Te 5 javascript firebase firebase-realtime-database

我的数据:

数据

我正在寻找一种使用自定义日期范围过滤日期的方法。我在网上看到了一些他们查询日期的例子,但时间戳一直是关键,这在我的情况下是不可能的。我已经尝试了下面的代码,但没有用。

  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);   
   }); 
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用。有任何想法吗?

Fra*_*len 9

您正在尝试过滤日期值,但您订购type的不是 Firebase 数据库查询的工作方式:您总是首先订购属性/值,然后过滤相同的属性/值。

所以要订购/过滤regdate

firebase.database().ref().child("Users").orderByChild('regdate')
  .startAt("2019-01-05").endAt("2019-01-10");
Run Code Online (Sandbox Code Playgroud)

请注意,我也更改endatendAt(使用大写字母A)。该endat你了,会给出一个语法错误。


你现在结束于2019-01-10。由于您的实际值包括时间,因此它们都将在此值之后立即下降。如果您还想包括自己注册的用户2019-01-10,请使用:

firebase.database().ref().child("Users").orderByChild('regdate')
  .startAt("2019-01-05").endAt("2019-01-10 23:59:59");
Run Code Online (Sandbox Code Playgroud)