Мануал по Bubble
  • 0. Введение
  • 1. Основы Bubble
  • 1.1 Что такое Bubble?
  • 1.2 Основные принципы
  • 1.3 Стратегии изучения Bubble
  • 1.4 Владение данными и приложением
  • 1.5 Допустимое использование
  • 2. Редактор приложения
  • 2.1 Основные разделы интерфейса
  • 2.2 Ключевые принципы
  • 2.3 Инструменты
  • 2.4 Горячие клавиши и Помощь
  • 3 Создание интерфейса
  • 3.1 Основные принципы
  • 3.2 Создание адаптивных страниц
  • 3.3 Управление с помощью условий
  • 3.4 Использование стилей
  • 3.5 Использование пользовательских шрифтов
  • 3.6 Советы при проектировании
  • 3.7 Использование шаблона
  • 4 Создание рабочих процессов
  • 4.1 Общие принципы
  • 4.2 Управление с помощью условиями
  • 4.3 Использование пользовательских процессов
  • 4.4 Советы по созданию рабочих процессов
  • 5 Работа с данными
  • 5.1 Ключевые понятия
  • 5.2 Тип Пользователь
  • 5.3 Сохранение данных
  • 5.4 Отображение данных
  • 5.5 Создание динамических выражений
  • 5.6 Пользовательские состояния элементов
  • 5.7 Вкладка Данные
  • 5.8 Конфиденциальность и безопасность
  • 6 Структурирование приложения
  • 6.1 Ключевые принципы
  • 6.2 Многостраничные приложения
  • 6.3 Элементы многократного использования
  • 7 Использование плагинов
  • 7.1 Для чего нужны плагины?
  • 7.2 Установка и использование плагинов
  • 7.3 Специальные плагины
  • 7.4 Создание плагинов
  • 8 Настройки приложения
  • 8.1 Версии приложения
  • 8.2 Личные и публичные приложения
  • 8.3 Пользовательские домены и SSL
  • 8.4 Политика паролей
  • 8.5 Визуальные настройки
  • 8.6 Язык и сообщения внутри приложения
  • 8.7 Социальные сети и SEO
  • 9 Использование API Баббла
  • 9.1 Примеры использования API
  • 9.2 Определение API
  • 9.3 Использование API
  • 9.4 Запланированные рабочие процессы
  • 9.5 Примеры и руководства
  • 10 Тестирование приложения
  • 10.1 Основные стратегии
  • 10.2 Использование отладчика
  • 10.3 Использование логов сервера
  • 11 Поддержка приложения
  • 11.1 Контроль версий
  • 11.2 Копирование и восстановление базы данных
  • 11.3 Массовые операции
  • 11.4 Комментирование
  • 11.5 Совместная работа
  • 12 Архитектура, оптимизация и ограничения движка Баббл
  • 13 Создание плагинов
  • 13.1 Редактор плагинов
  • 13.2 Основные и общие настройки
  • 13.3 Добавление API-соединений
  • 13.4 Создание элементов
  • 13.5 Создание действий
  • 13.6 Загрузка данных
  • 13.7 Публикация и контроль версий
  • 13.8 Интеграция с GitHub
  • 14 Тарифы на аренду выделенных серверов
  • 14.1 Преимущества выделенных кластеров
  • 14.2 Использование выделенного кластера
  • 15 Учетные записи, тарифы и оплата
  • 15.1 Управление учетной записью
  • 15.2 Тарифы и оплата
  • 15.3 Создание приложений на заказ
  • 15.4 Продажа на торговой площадке Баббл
Powered by GitBook
On this page
  • Типы, поля и сущности
  • Типы
  • Поля
  • Сущности
  • Встроенные поля
  • Тип содержимого элемента
  • Частный случай использования данных API
  • Интерфейс создания типов
  • Несовместимости типов и ошибки

Was this helpful?

5.1 Ключевые понятия

Типы, поля и сущности

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

Типы

Различные типы данных - это самое высокоуровневое понятие, которое вы определяете при создании приложения, управляемого данными. Они позволяют вам описывать запись в базе данных как XX. В случае нашей площадки различные типы данных будут включать «Автомобиль», «Бронирование», «Обзор». Определение этих типов - это первый шаг для описания того, что будет содержать база данных, прежде чем определять, как описывать эти элементы.

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

Как только в Bubble создан тип, также будет определен вспомогательный тип, им будет список сущностей этого типа. Если тип - это «автомобиль», «список автомобилей» будет другим типом, с которым вы можете работать в Bubble, отображать в повторяющейся группе и т.д.

Поля

Поля - способ описания того, как должна выглядеть запись определенного типа. Фактически, это то, куда вы будете сохранять данные в заданной записи. Например, «автомобиль» (который имеет тип «автомобиль», как задано выше), будет иметь «бренд», «пробег», «цвет», «изображение» и т.д. Определение этих полей позволит вы сохранить нужные данные в нужном месте и показать их в вашем приложении.

Когда вы создаете поле типа (пользовательский интерфейс для этого будет рассмотрен далее в этой главе), вам нужно выбрать тип для этого поля. Большинство полей будут использовать один из встроенных в Bubble простых типов.

  • "текст"/"text": используется для представления текста (или последовательности символов)

  • "число"/"number": используется для представления чисел, с дробной частью или без

  • "да/нет"/"yes/no": используется для представления значения да или нет (булевская переменная в традиционном программировании)

  • "дата"/"date": используется для представления точной даты, например, времени и даты

  • "географический адрес"/"geofraphic address": используется для представления адреса (на карте)

  • "изображение, файл"/"image, file"

  • "числовой интервал"/"number interval"

  • "интервал дат"/"date interval"

Так, а нашем примере, у машины будет поле "имя" текстового типа, "изображение" типа "изображение", "цена" численного типа.

Тип поля будет иметь важные последствия для того, как вы сможете использовать данные при создании вашего приложения. Например, совершать операции. Поля текстового типа могут быть соединены или обрезаны, числа умножены и т.д. Адрес может быть показан на карте и т.д. Для того, чтобы вычислить 10% от "автомобиля" нам нужно, чтобы его цена была числового типа.Типы полей также важны для сортировки записей в списке. Если мы хотим сортировать по цене, поле должно быть числом.

Также у поля может быть тип, заданный самостоятельно (пользовательский тип). Эти типы, называемые составными, это способ связать две записи в базе данных. Например, у автомобиля должен быть владелец типа User (Пользователь)

Сущности

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

Встроенные поля

Bubble по умолчанию добавляет несколько полей к каждому типу. Эти поля "Дата создания"/"Created date" и "Дата изменения"/"Modified date" типа дата. Для сущностей не типа Пользователь, есть еще третье поле "Создатель"/"Creator" типа Пользователь. Для каждого типа, кроме пользователя, это поле создаётся и привязывается к пользователю, который был в системе на момент создания сущности (см. ниже несколько действий, которые позволяют изменять сущности).

Каждая сущность в Bubble получает уникальный идентификатор, назначаемый при создании. Использование этого поля не распространено, но в некоторых случаях, если вам нужен способ однозначно идентифицировать вещь, вы можете использовать поле "уникальный идентификатор"/"unique id".

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

Тип содержимого элемента

У элементов-контейнеров (а также нескольких элементов из раздела Визуальные Элементы, таких как карта) есть поле "тип содержимого"/"type of content". Это свойство позволяет указать, какой вид данных (или тип сущностей) отображает элемент. Например, повторяющаяся группа может отображать список "автомобилей". Задание типа на уровне повторяющейся группы очень важно, т.к. это позволит вам получить доступ к различным полям нужного типа внутри контейнера. Например, если повторяющаяся группа, отображает список автомобилей, вам может понадобиться добавить в первую ячейку текст и задать подпись "Название машины из текущей ячейки"/"Current cell's car's name". Определение типа содержимого позволит ядру Bubble знать, какие поля доступны в контексте каждого контейнера.

Частный случай использования данных API

Если вы используете какие-то плагины, которые подключаются к внешним API в вашем приложении, очень вероятно, что эти API добавят некоторые типы в ваше приложение. Например, если вы подключаетесь к Твиттеру, тип данных, возвращаемых Твиттером, при отправке запроса, - это «Tweet». Эти типы очень похожи на пользовательские типы, определенные выше, поскольку они могут описывать сущности и иметь какие-то поля. Вы сможете использовать этот тип во многих частях редактора Bubble аналогично тому, как было описано выше. Например, если вы используете повторяющуюся группу для отображения списка, вы сможете выбрать «Tweet» в качестве типа содержимого. Однако главное отличие состоит в том, что вы не можете создавать сущности такого типа (вы не можете создать сущность типа «Tweet»), и вы не можете их модифицировать.

Интерфейс создания типов

Существует два основных способа создания типов и полей в Bubble. Вы можете сделать это во вкладке «Данные», как описано в соответствующем разделе (!!!ЛНК!!!) этой главы, либо на лету, воспользовавшись действием (!!!ЛНК!!!), которое создаёт и модифицирует сущности. Оба способа одинаково влияют на структуру данных и по большому счету зависят от вашего взгляда на данные. Вы можете либо сначала проработать структуру данных, перед тем, как создавать процессы в приложении, в таком случае больше подойдет вкладка "Данные"; а можете задавать поля, которые вам нужны для описания автомобиля в момент использования действия по созданию этого автомобиля.

Несовместимости типов и ошибки

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

Previous5 Работа с даннымиNext5.2 Тип Пользователь

Last updated 4 years ago

Was this helpful?

Допустим, вы используете группу, содержимое которой определено как "автомобиль". Это означает, что группа (и элементы внутри неё) будут ссылаться на конкретную машину, чтобы показывать её изображение, название, цену и т.д. во время работы. Теперь допустим, что у вас есть действие, которое отображает данные в этой группе (другими словами, которое определяет, какую сущность следует отобразить в группе). Это действие должно показывать сущность типа "автомобиль". Если вы создали такое действие, которое в режиме работы пытается отобразить в этой группе Пользователя, то вы получите несоответствие. Инспектор ошибок определит это еще на этапе редактирования. Такие несоответствия типов встречаются также и с простыми типами данных. Например, если вы используете действие "Выставить счет текущему пользователю"/"'Charge the current user" для оплаты с кредитной карты пользователя, одним из полей будет «сумма». Это поле, естественно, должно быть числом. Если вы используете динамическое выражение для определения этой суммы, а оно выражается текстом или адресом, Инспектор ошибок отметит это как проблему, которую нужно разрешить.