5.5 Создание динамических выражений

Создание динамических выражений

Большая часть информации, которой будет оперировать ваше приложение Bubble, будет динамической. Приложение будет получать её из базы данных или из других источников, таких как внешние API (плагины). В этих случаях вам нужно будет использовать "Конструктор выражений"/"Expression Composer", чтобы задать выражение, которое будет выглядеть как выражение в режиме редактора и заменится на получившееся значение в во время. Например, если в Редакторе вы видите "Current user's email"/"Email текущего пользователя", то в режиме работы, в зависимости от пользователя в системе это станет "username@email.com".

Конструктор выражений

Конструктор выражений - это ключевой элемент Редактора Приложения Bubble, который позволяет вам составлять выражения без ввода с клавиатуры, вместо этого выбирая нужные варианты в выпадающем меню. Система сама предложит в следующем меню опции, которые доступны в зависимости от вашего предыдущего выбора. Например, если первый элемент в выражении - "Текущий пользователь"/"Current User", то следующее меню будет предлагать такие варианты, как "вошел в систему"/"is logged in", "не вошел в систему"/"is not logged in", "email" и т.д.

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

Типы выражений вычисляются в режиме редактора, чтобы провести проверку несоответствия типов (как объяснено выше (!!!ЛНК!!!) ). Например, если вы пытаетесь отобразить email Текущего пользователя в текстовом элементе, то "Текущий пользователь"/"Current user" не подойдет, так как это не текст, а вот "Current user`s email"/"Email текущего пользователя" подойдет. Когда выражение не подходит, Инспектор сообщит об ошибке и всё выражение отметится красным.

Для того, чтобы понимать, какое значение выдаёт выражение очень полезно в режиме работы использовать отладчик. Для получения более подробной информации смотрите соответствующую секцию (!!!ЛНК!!!).

Источники данных

Источники данных это то, откуда вы получаете данные при создании динамического выражения. Это первая секция выражения.

Источники данных могут быть: поиск по базе данных, текущий пользователь, данные из внешнего API, какая-то информация со страницы или из браузера и т.д. Этот раздел описывает основные источники данных. Вы можете найти подробности в Справочнике (!!!ЛНК!!!).

Поиск и запросы

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

Поиск задаётся типом искомых данных (например, "пользователь" или "автомобиль") и, при необходимости, какими-либо ограничениями и сортировкой.

Ограничения

Вы можете задать ряд ограничений для того, чтобы сузить поиск и извлечь только те элементы, которые подпадают под ограничения. Например, вы можете найти автомобили, цена которых находится в нужном диапазоне и т.д. Настройка ограничения работает так: вы выбираете поле, к которому нужно применить ограничение, затем задаёте оператор сравнения (такой как =, <, >, включает и т.д.) и указываете значение, с которым нужно сравнивать, оно может быть как статическим, так и динамическим. Если не включать ограничения, поиск выведет все записи указанного типа, которые есть в базе данных.

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

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

Данные из внешних API

Источник данных "Получить данные по API"/"Get Data from API" позволяет получить данные от внешней службы или сервера и вывести список объектов заданного типа. Если вы добавите в ваше приложение какие-то плагины, которые предоставляют данные, вы увидите соответствующие опции выпадающего меню "Поставщик данных по API/"API provider".

У каждого API разные параметры и интерфейс предложит вам ввести нужные значения. Например, для API от Google Places необходимо ввести значение того, что вы ищете ("кафе", "ресторан" и т.д.) и адрес. Здесь, как и при поиске, вы можете использовать динамические выражения, чтобы данные из API тоже были динамическими.

Обратитесь к главе Плагины (!!!ЛНК!!!), чтобы получить больше информации по плагинам.

Текущий пользователь

Значение "Текущий пользователь"/"Current User" представляет пользователя, который в данный момент находится в системе. Оно позволяет вам получить доступ к различным полям, которые заданы в типе Пользователь, в дополнение к встроенным полям, описанным выше (!!!ЛНК!!!).

Результат предыдущих действий

В рабочих процессах, когда действие выводит какие-то данные, вам может понадобиться обратиться к результату предыдущих операций в последующих действий. Например, вы можете создать сущность типа "заказ", и вам нужен ID этого заказа, чтобы послать его письмом. Источник данных "Результат предыдущего действия"/"Result from Previous action" позволит вам это реализовать.

Сущность родительского элемента и сущность текущей ячейки

Это одни аз самых распространенных источников данных. В Bubble элементы-контейнеры могут иметь прикрепленную к ним сущность, и все вложенные элементы смогут иметь к ней доступ. Вы можете изменять сущность, находящуюся в группе с помощью редактирования поля источника данных или действием "Отобразить данные в группу"/"Display Data in group".

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

Операции со списками

В Bubble есть несколько операций, которые можно применять к спискам. В частности, вы можете сортировать и фильтровать списки сущностей. Эти действия отличаются от поисковых ограничений так как они срабатывают после того, как список получен из базы данных, и в следствие могут привести к снижению производительности. Больше про настройки списков можете прочитать в справочнике (!!!ЛНК!!!).

Редактирование динамических выражений

Редактирование динамических выражений происходит с помощью выпадающих меню. Для выбора нужного параметра вы можете пользоваться мышкой, и также можете использовать клавиатуру. Стрелочки позволят вам перемещаться по опциям, а клавиша "delete" вернет вас в выражение и удалит следующие записи.

Last updated