为什么编译器会在下面的代码中出现“where”错误?
query=dblink.orderByChild("time").where("user","==","4").LimitToLast(2);
怎么写?
我想查询运行时数据库
用户值为4,按时间排序
您似乎正在使用 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 子句的查询