Flutter Firestore Как выполнить динамический запрос?

# #firebase #flutter #firebase-realtime-database

Вопрос:

 var searchRef = _firestore
        .collection("vehicles")
        .where("models.plane", isEqualTo: "true")
        .where("models.bus", isEqualTo: "true");
 

В этом методе запроса я могу запросить несколько значений, но я хочу сделать это динамически. Если пользователь входит в самолет, я хочу запросить самолет, или если пользователь входит в самолет и автобус, я хочу запросить самолет и автобус, или если пользователь входит в самолет, автобус и спортивный автомобиль, я хочу запросить самолет, автобус и спортивный автомобиль. То есть количество запрашиваемых переменных и переменные будут варьироваться от пользователя к пользователю.

Как я могу преобразовать этот код в динамический код.

Мои Документы Базы Данных

Документ Vehicle1

Документ Vehicle2

Документ Vehicle3

Комментарии:

1. может быть, позвонить куда -нибудь внутри какого-нибудь цикла?

2. Я пытался, но не смог найти правильный метод. Можете ли вы опубликовать динамически преобразованную версию этого кода с помощью указанного вами метода?

3. Query query = _firestore..collection("vehicles"); loop { query = query.where(...); } — это псевдокод: вам нужно ... заменить фактические данные на основе текущей итерации цикла, надеюсь, вы поняли идею

4. Вы можете создать запрос со всеми вашими параметрами, и вы можете избежать некоторых параметров в запросе, передав нулевое значение. например, если вы хотите выполнить поиск самолета и автобуса, укажите значение места и автобуса и оставьте спортивный автомобиль пустым. Это сработает.

5. Если вы получите ошибку запроса, вам необходимо создать индекс для этого запроса, который использует несколько условий where. Для этого вы получите одну ссылку в журнале консоли. Нажмите на эту ссылку, и индекс будет создан автоматически.