【问题标题】:Using StartAt from Firebase with Flutter Timestamps使用 Firebase 中的 StartAt 和 Flutter 时间戳
【发布时间】:2019-07-28 05:57:23
【问题描述】:

我在 Firestore 上保存了一些带有时间戳属性的帖子,然后我查询这些帖子按时间戳排序。我正在尝试创建一个“loadMore”函数,然后当用户滚动到底部并加载更多帖子时工作。

我是这样保存帖子的:

Firestore.instance
  .collection('posts')
  .add(<String, dynamic> {
     'content': 'content,
     'likes': 0,
     'comments': 0,
     'timestamp': DateTime.now(),
   })

并尝试以这种方式查询:

Firestore.instance
  .collection('posts')
  .orderBy('timestamp', descending: true)
  .startAfter(
    []..add(posts.last.timestamp)
  )
  ..limit(5)

但是,它一直忽略“startAfter”并返回一个从集合的第一个元素开始而不是下一个元素的列表。

希望获得使用此类查询的帮助 :)

【问题讨论】:

    标签: firebase dart flutter google-cloud-firestore


    【解决方案1】:

    将 DateTime 转换为 Unix 日期时间

    'timestamp': DateTime.now().toUtc().millisecondsSinceEpoch
    

    【讨论】:

    • 成功了。我更喜欢使用 DateTime 格式来更友好地查看数据库中的数据,但是,我现在可以接受这个。要检索我正在使用的数据:DateTime.fromMillisecondsSinceEpoch(doc.data['timestamp'], isUtc: true),
    • Firebase 和 Firestore 使用 unix 日期时间格式(自纪元以来的毫秒数),Firebase 客户端无法知道何时转换,因此您必须小心。您要检索的代码看起来不错。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 2023-01-31
    相关资源
    最近更新 更多