我正在构建一个应用程序,用户可以在其中写入我的数据库并向其他用户提问,例如医生应用程序。医生可以在哪里回答问题。
我想按日期对问题进行排序,我想按最新的,最受欢迎的对问题进行排序。
我尝试通过以下方式订购最新的商品:
日期:“ 2019年9月29日”
Firestore.instance
.collection("Questions")
.orderBy("date", descending: true) // 1 will be last, 31 will be latest
.snapshots(),
但这似乎不起作用。因此,我想知道如何从Firebase查询中正确排序数据。还是我必须将日期存储在Firebase中较长的时间,然后再进行转换?
此外,我想根据观看以下问题的用户数量来订购最受欢迎的问题:
questionsView:“ 3”,questionsView:“ 1032”等
Firestore.instance
.collection("Questions")
.orderBy("questionsView")
.snapshots(),
但这都不能正确执行排序。
我从传奇人物弗兰克·冯·帕芬(Frank von Puffen)那里看到了一篇很棒的文章,但我并不十分了解,所以我想知道是否有人可以帮助我解决这个问题。
这是他的帖子: Ordering Data In FireStore
最好的问候, 鲁斯本
答案 0 :(得分:1)
我尝试通过以下方式订购最新的商品:
日期:“ 2019年9月29日”
但这似乎不起作用。
由于您的date
属性的类型为String,因此无法使用。在对字符串进行排序时,请记住,对字符串进行排序lexicographically。
所以我想知道如何从firebase的查询中正确排序数据。
要解决此问题,您应该将属性的类型更改为Date
。在这种情况下,您将获得时间顺序。
还是我必须将日期存储在Firebase中较长的时间,然后也许将其转换?
这是一种用于订购元素的解决方案,用于实时数据库,而不是用于Cloud Firestore。
我从传奇人物弗兰克·冯·帕芬(Frank von Puffen)那里看到了一篇很棒的文章,但我并不十分了解,所以我想知道是否有人可以帮助我解决这个问题。
在那种情况下,station
属性将整数保存为字符串值,实际上这是同一回事。在这种情况下,解决方案是将属性的类型更改为number或填充数字,以便它们都具有相同的长度,但是在您的情况下,属性的类型应该明确地为Date
和不是字符串。