Kod*_*ata 1 firebase-realtime-database flutter
我正在尝试将时间戳设置到 firebase 实时数据库中,但是当我检索时,而不是按时间戳排序。我就是这么喜欢的。
FirebaseDatabase.instance.reference().child('path').push().set({
'timestamp': ServerValue.timestamp
});
Run Code Online (Sandbox Code Playgroud)
这是节点
然后我像这样检索。
FirebaseDatabase.instance.reference().child('path').orderByChild('timestamp').once().then((snap) {
print(snap.value);
});
Run Code Online (Sandbox Code Playgroud)
但输出是这个
{-LJhyfmrWVDD2ZgJdfMR: {timestamp: 1534074731794}, -LJhyWVi6LddGwVye48K: {timestamp: 1534074689667}, -LJhzDlvEMunxBpRmTkI: {timestamp: 1534074875091}
Run Code Online (Sandbox Code Playgroud)
这些不是按时间戳排序的。我错过了什么吗?否则这是 firebase 错误还是抖动?
数据以正确的顺序检索到DataSnapshot. 但是当您调用snap.value快照时,必须将信息转换为 a Map<String, Object>,它不再可以保存有关子节点顺序的信息。
为了保持顺序,您必须DataSnapshot使用循环处理来自 的子节点。我不是 Flutter 的专家(根本),但我无法快速找到一种方法来为价值事件做到这一点。所以你可能想听听.childAdded:
FirebaseDatabase.instance
.reference()
.child('path')
.orderByChild('timestamp')
.onChildAdded
.listen((Event event) {
print(event.snapshot.value);
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2612 次 |
| 最近记录: |