【问题标题】:Sort documents in firestore collection chronologically按时间顺序对 Firestore 集合中的文档进行排序
【发布时间】:2020-07-05 00:53:33
【问题描述】:

有没有办法在创建时按时间顺序对集合中的文档进行排序?目前,它们无处不在。例如,在 To-Do 应用程序中,当您将新项目添加到集合时,它应该显示在底部,最后,而不是中间的某个位置。

【问题讨论】:

    标签: flutter dart google-cloud-firestore


    【解决方案1】:

    您需要根据文档中的一些数据定义一个顺序,并根据该字段对查询进行排序。

    基于时间排序的典型解决方案是确保您的文档都包含一个时间戳字段,您可以使用该字段对它们进行排序。当您调用add()(或其他方法更新数据)时,您可以使用FieldValue.serverTimestamp() 告诉Firestore 使用当前时间:

    collection(...).add({
        ...,  // your other fields
        createdOn: FieldValue.serverTimestamp()
    })
    

    然后你可以在使用orderBy()查询时使用该字段进行排序:

    collection(...).orderBy('createdOn')
    

    【讨论】:

      【解决方案2】:

      尝试使用 DateTime.now() 作为文档 ID。这应该按时间顺序排列集合。

      例如:

      Firestore.instance.collection('Posts').document(DateTime.now().toString()).setData({});
      

      【讨论】:

      • 另外我应该注意到,Doug Stevenson 的回答也是一个理想的解决方案。如果您的应用拥有不同时区的用户,则尤其如此,因为我的解决方案无法正确排序。
      猜你喜欢
      • 2014-08-21
      • 2018-09-21
      • 2011-03-30
      • 1970-01-01
      • 2019-03-03
      • 2019-11-03
      • 1970-01-01
      • 1970-01-01
      • 2020-12-05
      相关资源
      最近更新 更多