颤振 - firebase orderby 首先添加
Posted
技术标签:
【中文标题】颤振 - firebase orderby 首先添加【英文标题】:flutter - firebase orderby first added first 【发布时间】:2021-03-26 07:57:44 【问题描述】:这是我的 Firebase 数据
从数据库读取时,最后添加的节点成为第一个(倒序)。
数据库参考:
final databaseReference = FirebaseDatabase.instance.reference().child('learn/all');
和 StreamBuilder
StreamBuilder(
stream: databaseReference .onValue,
builder: (context, snap)
if (snap.hasData && !snap.hasError && snap.data.snapshot.value != null)
Map data = snap.data.snapshot.value;
List item = [];
data.forEach((index, data) => item.add("key": index, ...data));
return ListView.builder(
itemCount: item.length,
itemBuilder: (context, index)
return ListTile(
title: Text(item[index]['question']),
);
,
);
else
return Text("No data");
,
)
如何按先添加先的顺序检索?
【问题讨论】:
请编辑您的问题并添加存在于all
节点下的对象的内容。
@AlexMamo 每个节点上都有一个名为 id 的子节点。
【参考方案1】:
嗨 Ashique Valanchery,如果您想反转您的列表,您的问题不完整,您必须在您的 orderBy
方法中使用 descending
final fireStore = Firestore.instance;
var temp = fireStore.collection("collectionPath").orderBy("field", descending: true);
对于实时数据库,您必须在本地反转您的数据,因为实时数据库没有任何方法可以反转您的数据,如下面的代码:
var temp = 'A': 3, 'B': 1, 'C': 2;
var sortedKeys = temp.keys.toList(growable: true)
..sort((k1, k2) =>
temp[k1].compareTo(temp[k2]));
LinkedHashMap sortedMap = new LinkedHashMap.fromIterable(sortedKeys,
key: (k) => k, value: (k) => temp[k]);
print("Mahdi: sort editContactListener: $sortedMap");
【讨论】:
对不起,不是firestore,它是firebase实时数据库。像你回答的那样,找到了很多关于 Firestore 的文章。但是对于firebase数据库,我什么也找不到。 OP 正在为 Firebase 实时数据库而不是 Cloud Firestore 寻找解决方案。虽然两者都属于 Firebase,但它们都是两种不同的产品,具有两种不同的机制。 Ashique Valanchery 你得到答案了吗? @abbasjafary 不,ListView 有一个参数用于反转。但没有按预期工作。如果有任何用于订购的 firebase 方法,那就太好了。对于颤振,我找不到解决方案。 正如我所说,实时数据库没有任何反转列表的方法,因此首先您必须从实时数据库中订购您的列表,然后,您必须在本地或以编程方式反转您的列表.以上是关于颤振 - firebase orderby 首先添加的主要内容,如果未能解决你的问题,请参考以下文章