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

Действия Firestore

Действие Firestore позволяет создавать, обновлять или удалять запись в коллекции Firestore.

Предварительные требования

Типы действий с базой данных Firestore

Вот типы действий с базой данных Firestore:

  1. Создать документ:: Создает новую запись в указанной коллекции Firestore.
  2. Прочитать документ: Извлекает данные документа с помощью ссылки.
  3. Обновить документ: Обновляет значение указанного поля существующего документа.
  4. Удалить документ: Удаляет записи в указанной коллекции Firestore.
  5. Запрос коллекции: Извлекает запись(и) из коллекции Firestore.

Действие «Создать документ»

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

  1. Выберите виджет (например, кнопку), к которому хотите добавить действие.
  2. В панели свойств (правое меню) выберите Действия и нажмите Открыть. Откроется редактор потоков действий в новом всплывающем окне.
  3. Нажмите + Добавить действие.
  4. В правой части найдите и выберите действие Firestore > Создать документ.
  5. Укажите коллекцию с именем вашей коллекции.
  6. В разделе Установить поля нажмите кнопку + Добавить поле.
  7. Откройте поле, чтобы передать его значение из виджета:
    • Установите Источник значения в Из переменной.
    • Нажмите на НЕ УСТАНОВЛЕНО и выберите Состояние виджета > Имя текстового поля.
  8. Аналогично добавьте поле для других элементов интерфейса.
  9. По умолчанию документы добавляются с автоматически сгенерированным идентификатором. Однако, если вы предпочитаете использовать свой собственный идентификатор для документа, включите переключатель Пользовательский идентификатор.

Действие «Прочитать документ»

В некоторых сценариях может потребоваться извлечь данные документа в ответ на действие виджета. Например, извлечение деталей профиля пользователя, таких как имя, фото профиля и биография, для отображения при нажатии на кнопку.

Вот несколько других случаев использования, где это действие может быть полезным:

  • Извлечение дополнительных деталей пользователя для поста или комментария.
  • Получение деталей продукта, цены и наличия для идентификаторов заказов в корзине пользователя.
  • Получение деталей городов, на которые ссылается документ страны в приложении для путешествий.

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

Вот как настроены коллекции:

img_25.png

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

  1. Выберите виджет (например, кнопку), к которому хотите добавить действие.
  2. В панели свойств (правое меню) выберите Действия и нажмите Открыть. Откроется редактор потоков действий в новом всплывающем окне.
  3. Нажмите + Добавить действие.
  4. В правой части найдите и выберите действие Firestore > Прочитать документ.
  5. Теперь выберите ссылку для чтения данных.
  6. Укажите имя выходной переменной действия. Оно будет использоваться для хранения данных документа.

  1. Теперь вы можете использовать имя выходной переменной действия, указанное на предыдущем шаге, для извлечения деталей. Например, чтобы отобразить данные в виджете Text, выберите виджет Text > Панель свойств > Текст > Меню установки переменной > [имя_выходной_переменной_действия] > выберите поле, которое хотите отобразить.

Действие «Обновить документ»

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

  1. Выберите виджет (например, кнопку), к которому хотите добавить действие.

  2. В панели свойств (правое меню) выберите Действия и нажмите Открыть. Откроется редактор потоков действий в новом всплывающем окне.

  3. Нажмите + Добавить действие.

  4. В правой части найдите и выберите действие Firestore > Обновить документ.

  5. Чтобы обновить конкретный документ в коллекции Firebase, необходимо указать ссылку на этот документ. Ссылка выступает в роли указателя на точный документ, который вы хотите обновить.

  6. В разделе Установить поля нажмите кнопку + Добавить поле.

  7. Откройте поле, чтобы передать его значение из виджета:

    1. Установите Источник значения в Из переменной.
    2. Нажмите на НЕ УСТАНОВЛЕНО и выберите Состояние виджета > Имя текстового поля.
  8. Аналогично добавьте поле для других элементов интерфейса.

Действие «Удалить документ»

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

  1. Выберите виджет (например, кнопку), к которому хотите добавить действие.
  2. В панели свойств (правое меню) выберите Действия и нажмите Открыть. Откроется редактор потоков действий в новом всплывающем окне.
  3. Нажмите + Добавить действие.
  4. В правой части найдите и выберите действие Firestore > Удалить документ.
  5. Чтобы удалить конкретный документ в коллекции Firebase, необходимо указать ссылку на этот документ. Ссылка выступает в роли указателя на точный документ, который вы хотите удалить.

Действие «Запрос коллекции»

В определенных сценариях может потребоваться вручную выполнить запрос коллекции. Например, вы можете захотеть извлекать данные только в ответ на конкретное действие пользователя, такое как нажатие кнопки или отправка формы.

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

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

  1. Выберите виджет (например, кнопку), для которого хотите определить действие.

  2. В панели свойств (правое меню) выберите Действия и нажмите Открыть. Откроется редактор потоков действий в новом всплывающем окне.

  3. Нажмите + Добавить действие.

  4. В правой части найдите и выберите действие Firestore > Запрос коллекции.

  5. Выберите коллекцию, которую хотите запросить.

  6. Выберите тип запроса из следующих вариантов:

    • Список документов: Используйте этот вариант, когда нужно запросить весь список документов из коллекции. Это полезно для извлечения нескольких документов, которые можно упорядочить или отфильтровать по конкретным критериям, таким как ключевое слово.
    • Один документ: Выберите этот вариант, когда хотите извлечь конкретный документ из коллекции, обычно по его уникальному идентификатору.
    • Подсчет: Выберите этот вариант, чтобы определить количество документов, соответствующих определенным критериям, без извлечения самих документов. Это полезно для получения быстрых сведений или сводок, например общего количества записей, соответствующих фильтру.
  7. Вы также можете отфильтровать и упорядочить результат запроса.

  8. Укажите имя выходной переменной действия. Оно будет использоваться для хранения результата запроса.

  1. Теперь вы можете использовать имя выходной переменной действия, указанное на предыдущем шаге, чтобы сгенерировать потомков из переменной в ListView.
  2. Наконец, вы можете отобразить данные в виджете Text. Для этого выберите виджет Text > Панель свойств > Текст > Меню установки из переменной > [имя_переменной_потомков] элемент > выберите поле, которое хотите отобразить.

Фильтрация запроса коллекции

Иногда может потребоваться отфильтровать список на основе условия. Например, вы можете захотеть показать только незавершенные элементы Todo в основном списке.

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

  • В свойствах действия Запрос коллекции прокрутите вниз и нажмите кнопку + Фильтр внизу
  • Найдите Имя поля, нажмите на Не установлено и выберите поле, к которому хотите применить фильтр.
  • В выпадающем списке Отношение нажмите на Не установлено и выберите отношение из списка.
  • Найдите свойство Значение, установите подходящее значение и нажмите Подтвердить.
к сведению
  • Выберите отношение фильтра, соответствующее вашим нуждам. Например, если вы хотите отобразить только незавершенные задачи, создайте поле с именем 'isDone', установите отношение 'Равно' и значение 'False'.
  • Другой пример — отображение пользователей старше 30 лет; в этом случае создайте поле 'Age', установите отношение 'Больше', и укажите значение 30.
  • Вы можете комбинировать несколько фильтров с помощью операторов И или ИЛИ, чтобы создать более сложную логику фильтрации. Это позволяет уточнить запрос данных для соответствия конкретным условиям.

Упорядочивание запроса коллекции

Вы можете захотеть отобразить список в определенном порядке. Например, показать список Todo в порядке даты выполнения.

Чтобы указать порядок при запросе коллекции:

  • В свойствах действия Запрос коллекции прокрутите вниз и нажмите кнопку + Упорядочить по внизу
  • Найдите Имя поля, нажмите на Не установлено и выберите поле, по которому хотите упорядочить.
  • В выпадающем списке Порядок нажмите на Не установлено и выберите порядок — возрастающий или убывающий — и нажмите Подтвердить.
к сведению

Выберите порядок в соответствии с требованиями. Например, если вы хотите отобразить элементы Todo, отсортированные по дате выполнения, просто установите Имя поля в date и Порядок в возрастающий.

warning

Если вы применяете и фильтрацию, и упорядочивание при запросе коллекции, потребуется индекс, иначе FlutterFlow выдаст ошибку. Узнайте, как избежать ошибок.

Включение пакетной записи Firestore

При работе с базами данных часто требуется создавать, обновлять или удалять данные. Обычно для каждой операции отправляются отдельные запросы в базу данных, что требует нескольких обращений к серверу. Это может быть затратным по времени и неэффективным.

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

подсказка

Предположим, у вас есть приложение для электронной коммерции, и после успешного заказа нужно обновить количество товаров на складе и создать новый документ в коллекции 'orders'. С помощью пакетной записи вы можете объединить эти операции и выполнить их вместе, чтобы обеспечить согласованность данных.

Чтобы включить пакетную запись Firestore, у вас должно быть несколько действий Firestore в любой комбинации; в редакторе действий в правом верхнем углу включите Пакетные записи Firestore.

img_26.png

Включение пакетной записи Firestore

Запуск действия при изменении данных

Иногда может потребоваться запустить действие при каждом изменении данных в коллекции. Например, в новостном приложении вы можете уведомлять пользователей о появлении новых новостей, как показано здесь:

Для этого:

  1. Убедитесь, что вы добавили Запрос коллекции или Документ по ссылке на виджет с отключенным Единоразовым запросом.
  2. Теперь, на виджете с Запросом коллекции или Документом по ссылке, откройте редактор потоков действий и установите При изменении данных в качестве триггера действия. Это гарантирует, что любые добавленные действия будут запускаться при обновлении, добавлении или удалении данных.
  3. Теперь вы можете добавить любое действие, которое хотите выполнить, например, показать уведомление, обновить интерфейс или извлечь связанные данные.
к сведению

Если вы используете этот триггер на ListView, обязательно отключите Бесконечную прокрутку.