首页 > 解决方案 > 有没有办法在同一个查询中使用 <= 或 >= 函数来假设年龄和地理位置

问题描述

如果有人可以告诉我有关它的详细信息,则在此代码中出现错误

E/MethodChannel#plugins.flutter.io/cloud_firestore(23009):无法处理方法调用 E/MethodChannel#plugins.flutter.io/cloud_firestore(23009):java.lang.IllegalArgumentException:除 whereEqualTo() 之外的所有过滤器都必须在同一个领域。但是您对“年龄”和“用户GeoHash”有过滤器

    enter code here
if (user.filtergender == 'Male' &&
         user.filtercounty.isNotEmpty &&
         user.filterCity.isEmpty &&
         user.filterReligion.isNotEmpty &&
         user.filterAncestry.isEmpty &&
         user.filterage0.isNotEmpty &&
         user.filterage1.isNotEmpty &&
         user.filterDistanz.isNotEmpty||
         user.filtergender == 'Female' &&
             user.filtercounty.isNotEmpty &&
             user.filterCity.isEmpty &&
             user.filterReligion.isNotEmpty &&
             user.filterAncestry.isEmpty &&
             user.filterage0.isNotEmpty &&
             user.filterage1.isNotEmpty &&
             user.filterDistanz.isNotEmpty) {
       print('Status Male/Female   w Religion   w Country ');
       key = usersRef
           .where('activeuser', isEqualTo: 1)
 
           .where('age', isGreaterThanOrEqualTo: user.filterage0)
           .where('age', isLessThanOrEqualTo: user.filterage1)
           .where('userCounty', isEqualTo: user.filtercounty)
           .where('userReligion', isEqualTo: user.filterReligion)
           .orderBy('userGeoHash', descending: false)
           .where('userGeoHash', isGreaterThanOrEqualTo: lower)
           .where('userGeoHash', isLessThanOrEqualTo: upper)
           .limit(userLimit)
           .getDocuments();
     }


标签: fluttergoogle-cloud-firestoreflutter-dependencies

解决方案


好吧,作为第一步,为什么不按照错误消息告诉你的去做,不要使用多个 where 调用,使用单个 where 调用:

.where('userGeoHash', isGreaterThanOrEqualTo: lower, isLessThanOrEqualTo: upper)

.where('age', isGreaterThanOrEqualTo: user.filterage0, isLessThanOrEqualTo: user.filterage1)

推荐阅读