Flutter Firebase 数据库错误的时间戳顺序
Posted
技术标签:
【中文标题】Flutter Firebase 数据库错误的时间戳顺序【英文标题】:Flutter Firebase Database wrong timestamp order 【发布时间】:2019-01-19 09:07:55 【问题描述】:我正在尝试将时间戳设置到 firebase 实时数据库中,但是当我检索时,不是按时间戳排序。 我确实喜欢。
FirebaseDatabase.instance.reference().child('path').push().set(
'timestamp': ServerValue.timestamp
);
这是节点
然后我就这样检索了。
FirebaseDatabase.instance.reference().child('path').orderByChild('timestamp').once().then((snap)
print(snap.value);
);
但输出是这样的
-LJhyfmrWVDD2ZgJdfMR: timestamp: 1534074731794, -LJhyWVi6LddGwVye48K: timestamp: 1534074689667, -LJhzDlvEMunxBpRmTkI: timestamp: 1534074875091
那些不是按时间戳排序的。 我错过了什么吗? 否则这是 firebase 错误还是颤振?
【问题讨论】:
【参考方案1】:数据以正确的顺序检索到DataSnapshot
。但是当您调用snap.value
时,快照中的信息必须转换为Map<String, Object>
,它不再可以保存有关子节点顺序的信息。
为了保持顺序,您必须使用循环处理来自DataSnapshot
的子节点。我(根本)不是 Flutter 方面的专家,但我无法快速找到一种方法来为价值事件执行此操作。所以你可能想改为收听.childAdded
:
FirebaseDatabase.instance
.reference()
.child('path')
.orderByChild('timestamp')
.onChildAdded
.listen((Event event)
print(event.snapshot.value);
)
【讨论】:
抱歉回复晚了。它工作得很好!如果我使用DateTime.now().millisecondsSinceEpoch
,它也会起作用吗?类型是 int 但文档显示自 1970 年以来的毫秒数。所以我猜它有效,但我只是想确定一下。以上是关于Flutter Firebase 数据库错误的时间戳顺序的主要内容,如果未能解决你的问题,请参考以下文章
Flutter:无法从 firebase 读取数据。方法 '[]' 在 null 错误上被调用
Flutter web firebase/firestore错误运行
Flutter 和 Firebase。数据更改时重建小部件。错误的代码或错误的数据库? [关闭]
Flutter 在使用 StreamBuilder 从 firebase 加载数据之前显示红色错误屏幕,如何解决?
Firebase 核心依赖错误(Flutter/Firebase)
Flutter 错误:找不到符号导入 com.google.firebase.firestore.LoadBundleTaskProgress;