如何在firebase数据库中编写查询“用户值为4并按时间排序”

问题描述 投票:0回答:1

为什么编译器会在下面的代码中出现“where”错误?

query=dblink.orderByChild("time").where("user","==","4").LimitToLast(2);

怎么写?

我想查询运行时数据库

用户值为4,按时间排序

java android firebase firebase-realtime-database sketchware
1个回答
0
投票

您似乎正在使用 Firebase 实时数据库,但它没有

where
方法。它还可以最多对一个属性进行排序,然后仅对该属性进行过滤。

因此,如果您想过滤

user
,您可以这样做:

dblink.orderByChild("user").equalTo("4")

如果您想要最新的两件商品,那就是:

dblink.orderByChild("time").limitToLast(2)

但是您不能将这些组合在单个查询中(请继续阅读以了解更多信息)。

有关这方面的更多信息,请参阅有关从实时数据库中排序和过滤数据的 Firebase 文档。


您可以在此处使用的一种解决方法是将

user
time
值合并到允许查询的单个属性中: `"user_time": "4_1698703155601"。

有了该属性,您就可以通过以下方式获取用户

"4"
的最新 2 个节点:

dblink.orderByChild("user_time").endAt("4_9999999999999").limitToLast(2)

因此

"4_9999999999999"
是用户 ID 和可能的最高时间戳值,然后您将获得该时间之前的最后两项。

有关此示例和其他示例的更多信息,请参阅我的回答:基于 Firebase 中的多个 where 子句的查询

© www.soinside.com 2019 - 2024. All rights reserved.