Flutter & Firebase - 使用 2 值排序



我正在开发一个类似于购物清单的应用程序。
在下面的代码中,您可以看到我如何从firebase获取数据,并使用orderBy对所有数据进行排序。
例如,我有:

"itemName"itemStorage"itemNumber">
"Tomatoes"pantry"2">
"Potatoes"pantry"5">
"Salmon"freezer"2">
"Beer"pantry"5">
"Onion"pantry"3">
"Pizza"freezer"2">
所以使用orderBy我可以按itemName, itemStorage或itemNumber排序。
我的问题是,我想显示所有项目排序的itemStorage,然后按itemName..我想要这样的东西:

"啤酒"储藏室"5">
"洋葱"储藏室"3">
"土豆"储藏室"5">
"西红柿"储藏室"2">
"比萨饼"冷冻柜"2">
"鲑鱼"冷冻柜"2">

我如何使用2值排序数据?
提前感谢
...
child: StreamBuilder<QuerySnapshot>(
stream: fireStore.collection('items').orderBy("itemName").snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return const Text('No tasks to display');
} else {
return ListView(
children: snapshot.data!.docs.map((DocumentSnapshot document) {
Map<String, dynamic> data = document.data()! as Map<String, dynamic>;
...
...
}

感谢Frank van Puffelen的评论,我已经解决了。
我试过了:

fireStore.collection('items').orderBy("itemStorage").orderBy("itemName").snapshots()

然后,一旦编译,在调试控制台中,我有一个创建索引的firebase链接,所以现在它工作没有任何问题。

W/Firestore(13965): (24.3.1) [Firestore]: Listen for Query(target=Query(items order by itemStorage, itemName, __name__);limitType=LIMIT_TO_FIRST) failed: Status{code=FAILED_PRECONDITION, description=The query requires an index. https://console.firebase.google.com/....RoMCghfX25hbWVfXxAB, cause=null}

最新更新