使用 Firebase 订购 [关闭]

Posted

技术标签:

【中文标题】使用 Firebase 订购 [关闭]【英文标题】:Order By using Firebase [closed] 【发布时间】:2020-04-25 06:29:05 【问题描述】:

我正在处理一个 Ionic 项目,当我想在屏幕上显示 firebase 文档时,我想按日期对它们进行排序,这是我收藏的每个文档中的日期类型字段:

这是我用来将 firebase 文档引入我的应用程序的代码。

constructor(private aF: AngularFirestore, private aS: AuthServiceService) 
    this.aF.collection('orders', ref => ref.where('location', '==', 'Store Name Example')).valueChanges().subscribe( data => 
      this.userOrders = data;
    );

  

任何帮助都会很棒!

【问题讨论】:

问题是什么 请阅读文档并尝试从那里学到的知识:firebase.google.com/docs/firestore/query-data/… 已经试过了!但它不会在屏幕上显示 0 个结果! 您的代码中没有任何内容可以执行任何排序,因此问题尚不清楚。再看一下文档链接,并将您的注意力引向.order(by... 的使用。提供您的 Firebase 结构示例也很有帮助,以便我们了解集合和文档的外观。 【参考方案1】:

有关如何订购和限制数据的信息,请参阅 Firestore 文档:https://firebase.google.com/docs/firestore/query-data/order-limit-data

constructor(private aF: AngularFirestore, private aS: AuthServiceService) 
    this.aF.collection('orders', ref => ref.where('location', '==', 'Store Name Example').orderBy('date'))
        .valueChanges()
        .subscribe( data => 
            this.userOrders = data;
        
    );

为了能够订购日期,您必须在 Firestore 中以时间戳类型存储字段:https://firebase.google.com/docs/reference/js/firebase.firestore.Timestamp

如果您将日期存储在不可排序的字符串中,则无法对其进行排序。您可以订购存储的日期,例如yyyymmdd 格式或双精度。

要解决这个问题,您可以获取数据并使用 Timestamp 数据类型重新保存。

【讨论】:

已经试过了!但它不会在屏幕上显示 0 个结果! @Rogeliosalazar 所以在过滤结果之前,屏幕上有一些结果,但是在应用 orderBy(...) 之后,没有结果显示并且控制台中没有错误?你确定,你以日期格式而不是字符串存储日期? 再次感谢您的快速回复!我刚刚检查并在firebase上显示为字符串而不是时间戳。有什么解决办法吗?不,我在控制台上没有收到任何错误。 非常感谢!现在搞定了! @RogelioSalazar 如果将日期存储在字符串中,则无法订购。 不准确。日期可以采用这种格式yyyymmdd,在这种情况下,它很容易订购——但它必须采用这种特定的格式。此外,一些用例将日期存储为双精度,这又是可订购的。如果引用是 Firestore Server Timestamp,那么它也是可订购的。

以上是关于使用 Firebase 订购 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

(Android和Firebase)无法解析符号“dataSnapshot”[关闭]

Uncaught FirebaseError: Firebase: No Firebase App '[DEFAULT]' has been created - 在 vue.js 中调用 Fireba

Stripe 和 Firebase:FirebaseError:collection() 的第一个参数应为 CollectionReference、DocumentReference 或 Fireba

如何使用firebase通过查询进行订购[重复]

如何订购firebase的文件?

Firebase 数据库 Rest Api:如何使用未知节点订购