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エラーまたはフラッターですか?
データは正しい順序でに取得されますDataSnapshot
。ただしsnap.value
、スナップショットからの情報を呼び出すときは、に変換するMap<String, Object>
必要があります。これは、子ノードの順序に関する情報を保持できなくなります。
順序を維持するには、からの子ノードをDataSnapshot
ループで処理する必要があります。私は(まったく)Flutterの専門家ではありませんが、バリューイベントでこれを行う方法をすぐに見つけることができません。だからあなたは代わりに聞いてみたいかもしれません.childAdded
:
FirebaseDatabase.instance
.reference()
.child('path')
.orderByChild('timestamp')
.onChildAdded
.listen((Event event) {
print(event.snapshot.value);
})
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加