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

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

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

Last updated