Flutter, порядок firestore по двум полям - PullRequest
0 голосов
/ 21 июня 2020

Я пытаюсь создать два ползунка в своем приложении, когда они перемещаются, пользователи из Firestore должны быть отфильтрованы и загружены в список, я получаю эту ошибку:

Unhandled Exception: PlatformException (invalid_query, FIRInvalidArgumentException, Invalid query. У вас есть фильтр where с неравенством (lessThan, lessThanOrEqual, большеThan или большеThanOrEqual) в поле age, поэтому вы также должны использовать age в качестве вашего первого поля queryOrderedBy, но ваш первый queryOrderedBy в настоящее время вместо этого находится в поле 'position.geoha sh'.)

Я использую GeoFlutterFire и firestore, это код:

  Future<Stream<List<DocumentSnapshot>>> getUsersInRadiusAndAge(double radius,
      double minAge, double maxAge) async {
      Query q = _firestore.collection('users').where('age', isGreaterThanOrEqualTo: minAge, isLessThanOrEqualTo: maxAge);

      Position userLocation = await Geolocator().getCurrentPosition();

      GeoFirePoint center = geo.point(
          latitude: userLocation.latitude, longitude: userLocation.longitude);

      return geo.collection(collectionRef: q)
          .within(center: center, radius: radius, field: 'position');

  }

1 Ответ

0 голосов
/ 21 июня 2020

Этот запрос неверен:

  Query q = _firestore.collection('users').where('age', isGreaterThanOrEqualTo: minAge, isLessThanOrEqualTo: maxAge);

Вы должны сделать следующее:

Query q = _firestore.collection('users').where('age', isGreaterThanOrEqualTo: minAge).where('age', isLessThanOrEqualTo: maxAge);

Это вернет документы с возрастом> = minAge и возрастом <= maxAge </p>

...