Флаттер / дротик QuerySnapshot является равным или оператором? - PullRequest
0 голосов
/ 01 октября 2019

Я хотел бы спросить, есть ли в коллекции документ с полем «тест», равным 1, 2 или 4. Но, к сожалению, я не нашел подходящего решения.

Это мой подход. К сожалению,здесь это не работает (равно 1 | 2 | 4). Это нет или оператор? (|)

Future getPostsToday() async { 
   ...
    var firestore =  Firestore.instance;
    QuerySnapshot qn = await firestore.collection("Data").where("test",   isEqualTo: 1 | 2 | 4 ).getDocuments();
    return qn.documents;  
 }

1 Ответ

2 голосов
/ 02 октября 2019

Cloud Firestore не поддерживает следующие типы запросов:

  • Логические OR запросы. В этом случае вы должны создать отдельный запрос для каждого условия OR и объединить результаты запроса в вашем приложении.

Источник: Ограничения запроса

Редактировать:

Так что я думаю, вы могли бы сделать что-то вроде этого:

Future<List<DocumentSnapshot>> getPostsToday() async {
  final collection = Firestore.instance.collection("Data");

  // separate query for each OR condition
  final querySnapshots = await Future.wait([
    collection.where("test", isEqualTo: 1).getDocuments(),
    collection.where("test", isEqualTo: 2).getDocuments(),
    collection.where("test", isEqualTo: 4).getDocuments(),
  ]);

  // merge the query results and return
  return <DocumentSnapshot>[
    ...querySnapshots[0].documents,
    ...querySnapshots[1].documents,
    ...querySnapshots[2].documents,
  ];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...