Firebase 查询子键中的时间戳不起作用
Posted
技术标签:
【中文标题】Firebase 查询子键中的时间戳不起作用【英文标题】:Firebase query for timestamp in subkey not working 【发布时间】:2021-11-17 05:37:00 【问题描述】:我有以下代码:
DatabaseReference ref = lib.getFirebaseDatabase().getReference("data/newquestions");
Query q = ref.orderByChild("date/timeUTC");
long t = dtStart.getTimeUTC();
q.startAt(t);
q.addListenerForSingleValueEvent(new ValueEventListener()
这是样本数据:
"date" :
"time" : 1632050827132,
"timeUTC" : 1632043627132,
"timezone" : "Europe/Berlin"
,
"enddate" :
"time" : 1632137227132,
"timeUTC" : 1632130027132,
"timezone" : "Europe/Berlin"
,
"enumcontacttypes" : [ "Public" ],
"id" : 117,
"public" : true,
"userid" : 8
我总是得到相同数量的值,而与我指定的日期无关。 startAt()
函数无效。
【问题讨论】:
【参考方案1】:由于我看不到更详细的数据库架构,因此我不能说预期的查询是否会按预期工作。我能说的是,Firebase 实时数据库查询是不可变的。这意味着您不能更改现有查询的属性。如果您通过调用.startAt(t)
方法更改该值,那么它将成为一个新查询。因此,最简单的解决方案是将所有方法调用链接在一个 Query 对象中,如下所示:
DatabaseReference ref = lib.getFirebaseDatabase().getReference("data/newquestions");
long t = dtStart.getTimeUTC();
Query q = ref.orderByChild("date/timeUTC").startAt(t); //Added to the initial query
q.addListenerForSingleValueEvent(/* ... /*);
【讨论】:
以上是关于Firebase 查询子键中的时间戳不起作用的主要内容,如果未能解决你的问题,请参考以下文章