Перейти к основному содержимому

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

Запрос коллекции Firestore или таблицы Supabase позволяет автоматически получать запись (или список записей) каждый раз, когда пользователь переходит на страницу, содержащую этот запрос. Информация из записи может использоваться для обновления любого виджета на странице.

Предварительные требования
  • Для запроса коллекции Firestore завершите настройку Firebase и добавьте данные в коллекцию.
  • Для запроса таблицы Supabase завершите настройку Supabase и добавьте данные в таблицу.

Определение запроса

Перейдите на страницу проекта в FlutterFlow и выполните следующие шаги, чтобы определить запрос Query Collection (запрос коллекции) для бэкенда:

  1. Выберите виджет (или страницу), к которому нужно применить запрос.
  2. В панели свойств (правая панель) выберите Backend Query (запрос бэкенда).
  3. Выберите тип запроса Query Collection (запрос коллекции).
  4. Выберите коллекцию Firestore, которая будет использоваться для выполнения запроса.
  5. В разделе Query Type (тип запроса) выберите List of Documents (список документов; возвращает список ссылок на документы) или Single Document (один документ; возвращает только одну ссылку на документ).
  6. Если в предыдущем шаге вы выбрали List of Documents (список документов), можно установить Limit (ограничение) — максимальное количество возвращаемых документов.
  7. Чтобы применить фильтр для получения документов, нажмите кнопку + Filter (добавить фильтр). Выберите имя поля, которое будет использоваться в качестве фильтра, укажите отношение (например, Equal To, Greater Than), а затем выберите источник значения (либо как Specific Value, либо как From Variable), с которым будет проверяться отношение.
  8. Чтобы задать порядок возврата документов, нажмите кнопку + Order By (сортировка по). Выберите имя поля для сортировки и укажите порядокIncreasing или Decreasing.
  9. Ниже приведены дополнительные настройки, которые можно настроить в зависимости от требований:
    • Single Time Query (одноразовый запрос): Если опция отключена, результаты запроса будут автоматически обновляться при создании, обновлении или удалении документов или строк. Однако для Supabase эта опция включена по умолчанию, то есть запрос выполняется только один раз. Чтобы включить обновления в реальном времени, отключите её.
    • Ignore Empty Filter Values (игнорировать пустые значения фильтров): Отключена по умолчанию, то есть запрос попытается найти документы с пустыми текстовыми полями, если значение фильтра пустое. При включении запрос будет игнорировать поля с пустыми значениями фильтров.
    • Filter on Null Values (фильтрация по пустым значениям): По умолчанию, если значение фильтра равно null, этот фильтр игнорируется. Включение опции позволит учитывать фильтры с null-значениями.
    • Enable Infinite Scroll (включить бесконечную прокрутку): Чтобы реализовать бесконечную прокрутку, включите эту опцию и следуйте инструкциям здесь.
  10. Нажмите Confirm (подтвердить).
  11. Если выбранный запрос возвращает список документов и применяется к любому гибкому виджету (например, Column, Row или ListView), FlutterFlow динамически сгенерирует дочерние виджеты. Отобразится диалог с соответствующим сообщением — нажмите Confirm (подтвердить).
к сведению

Инструкции по запросу таблицы Supabase почти идентичны, за исключением того, что в качестве Query Type (типа запроса) нужно выбрать Supabase Query (запрос Supabase).

Ограничения потоковой передачи Supabase с фильтрами

При использовании запроса Supabase с включенными обновлениями в реальном времени действуют следующие ограничения:

  • Поддерживается только один фильтр: Потоковая передача Supabase поддерживает только один фильтр. Комбинирование нескольких фильтров (например, isActive = true AND city = 'Los Angeles') не допускается.
  • События удаления не фильтруются: Потоковые запросы не обнаруживают удаления, даже если удаляемая строка соответствует условию фильтра. Например, если вы используете потоковую передачу строк с фильтром city = 'New York’ и строка удаляется, результат запроса не отразит это удаление.
  • Обновления, удаляющие строки из фильтров, не отслеживаются: Изменения, из-за которых строка больше не соответствует условию фильтра (например, обновление isActive с true на false), не вызовут обновление в результате запроса.

Подробности об ограничениях см. в официальной документации Supabase.

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

Документы, полученные с помощью запроса бэкенда, можно использовать для установки значений записей в виджеты на странице. Чтобы использовать данные записи документа, выполните следующие шаги:

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

Аналогичные шаги можно выполнить для использования данных записи в других виджетах.

Часто задаваемые вопросы

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

Сначала убедитесь, что опция Single Time Query (одноразовый запрос) отключена в запросе, где она добавлена. Затем проверьте, включена ли функция реального времени для вашей таблицы в проекте Supabase. Эта опция находится в правом верхнем углу просмотра таблицы.

enable-realtime-updates-sb-table.avif

Кроме того, обновления в реальном времени можно включить при создании новой таблицы.

enable-realtime-updates-sb-table.avif