如何在 Flutter 中从 Firestore 订购数据,orderBy 订购不正确

Rus*_*koz 5 firebase flutter google-cloud-firestore

我正在构建一个应用程序,用户可以在其中写入我的数据库并向其他用户提问,例如医生应用程序。医生可以回答问题的地方。

我想按日期排序问题,我想按最新和最受欢迎的问题排序。

我尝试通过以下方式订购最新的:

日期:“2019 年 9 月 29 日”

Firestore.instance
        .collection("Questions")
        .orderBy("date", descending: true) // 1 will be last, 31 will be latest
        .snapshots(),
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用。所以我想知道如何从 firebase 的查询中正确排序数据。或者我是否必须将日期存储在 firebase 中,然后再进行转换?

此外,我想根据有多少用户通过以下方式观看了该特定问题,对最受欢迎的问题进行排序:

问题视图:“3”,问题视图:“1032”等

Firestore.instance
        .collection("Questions")
        .orderBy("questionsView")
        .snapshots(),
Run Code Online (Sandbox Code Playgroud)

但这也不能正确排序。

我看到了传奇人物弗兰克·冯·普芬 (Frank von Puffen) 的一篇很棒的帖子,但我并没有真正理解这一点,所以我想知道是否有人可以帮助我解决这个问题。

这是他的帖子: 在 FireStore 中订购数据

最好的问候,鲁斯本

Ale*_*amo 2

我尝试通过以下方式订购最新的:

日期:“2019 年 9 月 29 日”

但这似乎不起作用。

它不会工作,因为你的date属性是字符串类型。对字符串进行排序时,请记住字符串是按字典顺序排序的。

所以我想知道如何从 firebase 的查询中正确排序数据。

要解决此问题,您应该将属性的类型更改为Date. 在这种情况下,您将得到一个时间顺序。

或者我是否必须将日期存储在 firebase 中,然后将其转换?

这是用于实时数据库而不是Cloud Firestore 的元素排序解决方案。

我看到传奇人物 Frank von Puffen 的一篇很棒的帖子,但我不太明白,所以我想知道是否有人可以帮助我解决这个问题。

在这种情况下,该station属性将整数保存为字符串值,这实际上是同一件事。在这种情况下,解决方案是将属性的类型更改为数字或填充数字,使它们都具有相同的长度,但在您的情况下,属性的类型应该明确是Date不是字符串。