I am trying to perform a Query but i keep getting this error which i did not understand.
i am trying to perform a complex query
hasInequality == field': All where filters with an inequality (<, <=, >, or >=) must be on the same field. But you have inequality filters on 'FieldPath([ageFrom])' and 'FieldPath([toAge]).
here is my code:
Future<List<DiscoverUserModel>> getListOfUserData() async {
List<DiscoverUserModel> usersData = [];
try {
final value =
await firestore.collection("users").doc(auth.currentUser.uid).get();
final element1 = value.data();
print('============> $element1');
var ageFrom = element1['Type']['Age']['ageFrom'];
var toAge = element1['Type']['Age']['toAge'];
var distanceFrom = element1['Type']['Distance']['distranceFrom'];
var distanceTo = element1['Type']['Distance']['distanceTo'];
print('===========> $ageFrom');
print('==========> $toAge');
print('=========> $distanceFrom');
print('========> $distanceTo');
if (ageFrom == '18.0' && distanceFrom == '0.0') {
await firestore.collection("users").get().then((value) {
value.docs.forEach((element) {
// print('resulting: ${element.data()['bio']}');
DiscoverUserModel discoverUserModel = DiscoverUserModel(
'${element.data()['name']}',
'${element.data()['email']}',
'${element.data()['phoneNumber']}',
'${element.data()['profilePictureUrl']}',
id: element.data()['id'].toString(),
bio: element.data()['bio'].toString(),
gender: element.data()['gender'].toString());
usersData.add(discoverUserModel);
usersData
.removeWhere((element) => element.id == auth.currentUser.uid);
return usersData;
});
});
} else {
//this query is where i am getting the error ........... from here...
await firestore
.collection('users')
.where('ageFrom', isGreaterThanOrEqualTo: ageFrom)
.where('toAge', isLessThanOrEqualTo: toAge)
.where('distanceTo', isLessThanOrEqualTo: distanceTo)
.where('distranceFrom', isGreaterThanOrEqualTo: distanceFrom)
.get()
.then(
(value1) => value1.docs.forEach((element) {
print('========ele==>$element');
DiscoverUserModel discoverUserModel = DiscoverUserModel(
'${element.data()['name']}',
'${element.data()['email']}',
'${element.data()['phoneNumber']}',
'${element.data()['profilePictureUrl']}',
id: element.data()['id'].toString(),
bio: element.data()['bio'].toString(),
gender: element.data()['gender'].toString(),
);
usersData.add(discoverUserModel);
usersData.removeWhere(
(element) => element.id == auth.currentUser.uid);
return usersData;
}),
);
}
return usersData;
} catch (e) {
print(e.toString());
return null;
}
}
I don't want to create the index from the console myself because is not good way..