使用动态当前时间戳查询firebase数据

时间:2017-11-30 02:29:59

标签: android firebase firebaseui

我有类似这样的数据:

Query query = Utils.getFirebaseDb().getReference()
        .child("registration")
        .child(mUser.getUid())
        .orderByChild("date")
        .startAt(DateTime.now().getMillis());

我使用此查询从当前时间戳开始获取数据

DateTime.now().getMillis()

但是,1512008080000总是在变化,

假设我在date : 1512008295000上查询,即2017年11月30日2:14:40,我将获得date : 1512008295000的项目,即2017年11月30日2:18:15,然后5分钟后,我仍然得到1512008380000的项目,即使当前时间戳为/etc/bigsql/pg10/bin/ /etc/bigsql/data/ 或2017年11月30日2:19:40。

如何通过动态更改当前时间戳来查询。

2 个答案:

答案 0 :(得分:3)

也许它没有回答你的问题,但我认为这是解决问题的方法。

首先,添加标识项目日期的新节点,如下所示

+ item1
    |---- date : 1512008295000
    |---- passed : false
    |---- etc : etc

然后将您的查询更改为:

Query query = Utils.getFirebaseDb().getReference()
        .child("pendaftaran")
        .child(mUser.getUid())
        .orderByChild("passed")
        .equalTo(false);

然后在onBindViewHolder检查日期是否通过,然后将passed值更改为true(如果已经过了):

@Override
protected void onBindViewHolder(YourHolder holder, int position, Model model) {

    boolean passed = model.getDate() < DateTime.now().getMillis();
    if (passed) {
       getRef(position).child("passed").setValue(true);
    } 
}

或者如果您不再需要传递的项目,只需删除它

getRef(position).removeValue();

这样,你不需要创建额外的节点,你仍然可以使用日期订购查询。

答案 1 :(得分:0)

无法将动态时间戳传递到Firebase数据库查询中。如果您想动态删除项目, 可以定期更改查询和/或从本地显示中删除过时的项目。