Android中如何实现多个order byFirestore
基于不同的if条件?
我想根据不同的字段值对我的 firestore 项目进行排序
像这样:
Query query= firestoredb.collection('items').document(docid).orderby('price').orderby('itemcategory').orderby('name**');
但有多少orderby
将添加的是dynamic。它将在运行时决定,即用户将从排序选项中选择什么。
那么我该如何让我的Firestore
在android中查询?
请帮我。
类似于您在代码中使用的查询:
Query query= firestoredb.collection('items').document(docid).orderby('price').orderby('itemcategory').orderby('name');
在 Cloud Firestore 中不可能,因为firestoredb.collection('items').document(docid)
返回一个文档参考 https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/DocumentReference对象并且你不能调用orderBy()
方法就可以了。因此,假设您想使用查询,请使用以下代码行:
Query query= firestoredb.collection('items').orderby('price').orderby('itemcategory').orderby('name');
会工作得很好。 Firestore中按多个字段排序没有问题。您甚至可以将传递方向设置为第二个参数:Direction.ASCENDING
or Direction.DESCENDING
.
Edit:
根据您的评论,您应该创建一个 if 语句,甚至更好,一个 switch 语句,并根据用户选择的内容来创建new查询对象。因此,如果用户仅选择价格,则查询应如下所示:firestoredb.collection('items').orderby('price')
, 就是这样。请参阅下面的示例:
Query query;
switch (option) {
case "price":
query = firestoredb.collection('items').orderby('price');
break;
case "itemcategory":
query = firestoredb.collection('items').orderby('itemcategory');
break;
case "price_itemcategory":
query = firestoredb.collection('items').orderby('price').orderby('itemcategory');
break;
case "name":
query = firestoredb.collection('items').orderby('name');
break;
case "price_name":
query = firestoredb.collection('items').orderby('price').orderby('name');
break;
default:
query = firestoredb.collection('items'); //No ordering
break;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)