此Firestore查询(两个OrderBy)有什么问题?

时间:2019-10-18 10:22:39

标签: android google-cloud-firestore

因此,我正在尝试从Firestore中的“用户”表中获取数据。在此示例查询中,我希望拥有个人资料图片的前30名最近活跃的用户。 (因为profileImage = 0等于没有任何图像,所以我要求profileImage> 0)。截至目前,它看起来像这样:

usersRef
    .whereGreaterThan("profileImage", 0)
    .orderBy("profileImage")
    .orderBy("lastActivity", Query.Direction.DESCENDING)
    .limit(30)
    .get(source)...

问题是,上一个Activity没有对结果进行排序(我想是因为lastActivity-orderBy在orderBy-profileImage之后)。但是,我不允许将orderBy-lastActivty放在前面,因为那样的话我会出错。

换句话说:

usersRef
    .orderBy("lastActivity", Query.Direction.DESCENDING)
    .whereGreaterThan("profileImage", 0)
    .orderBy("profileImage")
    .limit(30)
    .get(source)

如果我这样做,将出现以下错误:

  

java.lang.IllegalArgumentException:无效的查询。您在字段'profileImage'上有一个不等式的where过滤器(whereLessThan(),whereGreaterThan()等),因此您还必须将'profileImage'作为第一个orderBy()字段,但是您的第一个orderBy()当前在字段上改为使用“ lastActivity”。

那我该怎么办?我还有其他方法可以实现自己的目标吗?我是否通过此查询违反了Firestore的法律?感谢您的答复。

0 个答案:

没有答案