【发布时间】:2020-05-15 16:02:11
【问题描述】:
我在 Flutter 应用程序中使用 Firestore。 我有一个帖子集。每个帖子都有一个喜欢的数量和一个创建日期。 我想在上周,最后一天,上个月获得最喜欢的帖子...... 所以我必须在时间上做一个 isGreaterThanOrEqualTo 并按喜欢排序。但这是不可能的,因为我无法对两个字段进行排序。 实际上,为了解决这个问题,我在我的帖子文档中添加了 3 个字段:“月”(月数)、“周”(周数)、“日”(天数)。
我的查询是这样的:
Query query = firestore.collection("post");
query = query.where("month", isEqual: 3);
query = query.orderBy("like", descending: true);
QuerySnapshot data = await queryResult.getDocuments();
效果很好。但我想要过去 30 天最喜欢的帖子,而不是特定月份。而且我不知道是否可以使用firestore做到这一点。 获取所有文档并在之后进行排序对我来说不是一个合适的解决方案。
这个问题有解决办法吗?
【问题讨论】:
-
Firestore 不允许对不用作范围查询的字段进行排序。因此,如果您要求某个时间戳过去 30 天的范围,您将无法在另一个字段上进行排序。如果您绝对必须有一个按喜欢排序的查询,那么您将不得不想出一种方法来确定哪些文档在所需的时间范围内,而无需使用实际的范围查询。
-
这就是我的想法,如果没有“黑客”,我想做的事情是不可能的。无论如何感谢您的回复
标签: flutter google-cloud-firestore