gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 16:47:11 32 4
gpt4 key购买 nike

我有这样的数据:

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

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

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

但是,DateTime.now().getMillis() 总是在变化,

假设我在 1512008080000 上查询,也就是 2017 年 11 月 30 日 2:14:40,我会得到 date : 1512008295000 的项目,也就是 11 月 30 日, 2017 2:18:15,然后 5 分钟后,我仍然得到带有 date : 1512008295000 的项目,即使当前时间戳是 1512008380000 或 November 30, 2017 2:19:40 .

我如何使用动态更改的当前时间戳进行查询。

最佳答案

也许这不是您问题的答案,但我认为这是解决您问题的方法。

首先,添加标识项目日期已过的新节点,像这样

+ 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();

有了这个,您不需要创建额外的节点,您仍然可以使用日期对查询进行排序。

关于android - 使用动态当前时间戳查询 firebase 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47564955/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com