我有类似这样的数据:
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。
如何通过动态更改当前时间戳来查询。
答案 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数据库查询中。如果您想动态删除项目, 可以定期更改查询和/或从本地显示中删除过时的项目。