我正在尝试将时间戳设置为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错误或抖动吗?
答案 0 :(得分:4)
以正确的顺序将数据检索到DataSnapshot
中。但是,当您调用snap.value
时,必须将快照中的信息转换为Map<String, Object>
,而该DataSnapshot
不能再保存有关子节点顺序的信息。
要维持顺序,您必须使用循环处理.childAdded
中的子节点。我根本不是Flutter的专家,但是我无法快速找到一种针对价值事件的方法。因此,您可能想代替听 FirebaseDatabase.instance
.reference()
.child('path')
.orderByChild('timestamp')
.onChildAdded
.listen((Event event) {
print(event.snapshot.value);
})
:
"ajax": {
"url": "/Dechargements/GetList",
"type": "GET",
"datatype": "json"
},
"columns": [
{ "data": "id_Train" },
{
data: "date_dechargement",
type: "date",
render: function (data, type, full) {
if (data != null) {
var dtStart = new Date(parseInt(data.substr(6)));
return dtStart.toLocaleDateString();
} else {
return "";
}
}
},
{
data: "debut_de_déchargement",