Запрос к коллекции или таблице

Запрос к коллекции Firestore или таблице Supabase получает запись либо список записей, как только пользователь открывает страницу. Полученные данные подставляются в любые вложенные виджеты.

инфо
Что нужно заранее

Добавление запроса

Чтобы добавить запрос к коллекции Firestore или таблице Supabase:

  1. Выделите виджет или страницу, где должен выполняться запрос.
  2. Откройте Backend Query в панели свойств и нажмите Add Query.
  3. Выберите источник и то, что запрос должен вернуть:
    • Firestore: тип запроса Query Collection, затем Collection и режим — List of Documents (список документов) или Single Document (один документ).
    • Supabase: тип запроса Supabase Query, затем Table и режим — List of Rows (список строк) или Single Row (одна строка).
  4. Добавьте фильтры, если они нужны:
    • Firestore: в секции Filters нажмите + Filter, выберите поле, отношение и значение для сравнения.

    • Supabase: в секции Filters нажмите + Add Filter, выберите поле, отношение и значение. Для полнотекстового поиска поставьте Relation = Search (Full-Text) и выберите Search Type:

      • Websearch (Recommended) — привычный поисковый синтаксис: фразы в кавычках, OR, исключение слов через минус (-).
      • All Words — строки, в которых есть все слова запроса.
      • Phrase — строки, где слова запроса стоят подряд, как фраза.
      • Raw tsquery — операторы текстового поиска PostgreSQL для сложных запросов.

      Поле Language можно оставить пустым — тогда возьмётся конфигурация базы по умолчанию. В Value введите искомый текст.

  5. В секции Ordering нажмите + Order By (Firestore) или + Add Order (Supabase). Выберите поле и направление — Increasing или Decreasing.
  6. Дополнительные настройки:
    • Hide Widget If No Match (Firestore) — прячет виджет с запросом, если ни один документ не подошёл.
    • Ignore Empty Filter Values (Firestore) — по умолчанию выключено: с пустым значением фильтра запрос ищет документы с пустым полем. Включите, чтобы такие фильтры просто игнорировались.
    • Filter on Null Values (Firestore) — по умолчанию фильтр со значением null пропускается; включите, чтобы он учитывался.
    • Enable Infinite Scroll — список подгружается порциями по мере прокрутки. Размер порции задаёт Page Size. Для Supabase у таблицы должен быть первичный ключ, а запрос — отсортирован по нему.
    • Listen For Changes (Firestore) — обновляет уже показанные документы, когда меняются их данные. Включается автоматически вместе с бесконечной прокруткой.
  7. Нажмите Confirm.
  8. Если запрос возвращает список и добавлен на гибкий виджет — Column, Row или ListView, — FlutterFlow предложит сгенерировать дочерние элементы из полученных документов или строк; подтвердите.
внимание
Ограничения потоковых запросов Supabase

У запросов Supabase с обновлением в реальном времени есть ограничения:

  • Только один фильтр. Комбинации вроде isActive = true AND city = 'Los Angeles' не поддерживаются.
  • Удаления не отслеживаются. Даже если удалённая строка подходила под фильтр, запрос об этом не узнает: скажем, при фильтре city = 'New York' удаление такой строки в результатах не отразится.
  • Выход строки из-под фильтра не отслеживается. Если изменение делает строку не подходящей под условие — например, isActive меняется с true на false, — результат не обновится.

Подробности — в документации Supabase.

Использование данных

  1. Выделите виджет — Text, Image, ToggleIcon или другой.
  2. В панели свойств нажмите Set from Variable.
  3. В Source выберите переменную записи — она создаётся автоматически при добавлении запроса.
  4. В Available Options укажите поле.
  5. При необходимости задайте Default Value — оно подставится, если поле пустое.
  6. Нажмите Save.

Остальные виджеты заполняются так же.

Данные из коллекции Firestore

Данные из таблицы Supabase

Частые вопросы

Почему не работают обновления в реальном времени для таблицы Supabase?

Сначала проверьте, что в запросе выключена опция Single Time Query. Затем убедитесь, что для таблицы в проекте Supabase включён режим реального времени — переключатель находится в правом верхнем углу просмотрщика таблицы.

Включение обновлений в реальном времени

Включить эту возможность можно и при создании таблицы.

Включение при создании таблицы

перевод официальной документации FlutterFlow

обновлено · перевод от

⌕ ESC