TGViewer
Грязный ноукодер Грязный ноукодер @lowcodingdev · 3.53K subscribers
Post #157 761
🔥 Выступления с конференции: использование SQL в Bubble

Сегодня разберем супер интересные инсайты по использованию SQL в Bubble.

Я советую всем начинать изучать и внедрять SQL БД (Supabase) в свои сложные приложения, так как это расширяет потенциальные возможности приложения и улучшает скорость работы в десятки раз.


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

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

1️⃣ В его приложении используется база Bubble и тарифный план с отдельным сервером - на этом уровне пользователь получает доступ для чтения через SQL своей Bubble БД. Вы можете использовать любую стороннюю SQL БД (MySQL, PostgreSQL)

В его запросах стоит лимит 10000, хотя в стандартных запросах Bubble разрешает выдавать лишь 200 строк максимум. Лучше избегать таких кейсов и использовать пагинацию (OFFSET), но в крайнем случае обходом может являться использование API с запросом к БД, там нет лимитов.

2️⃣ Динамический запрос - лектор показывает запрос с функцией execute_dynamic_query, где переменной является текст самого запроса (Select * FROM…). Он использует этот запрос для того, чтобы динамически выбирать нужную базу (тестовую/лайв), так как невозможно указать название базы через стандартную переменную ($1).

Такой функции в PostgreSQL не существует, поддержка Bubble предоставила ему эту функцию, предварительно создав ее в самой базе Bubble. Однако, я исследовал эту идею и сделал такую функцию сам:

CREATE OR REPLACE FUNCTION execute_dynamic_sql(query text)
RETURNS SETOF RECORD AS $$
BEGIN
RETURN QUERY EXECUTE query;
END;
$$ LANGUAGE plpgsql;


Итоговый запрос в Bubble выглядит так - SELECT * FROM execute_dynamic_sql($1) AS t(name text), где $1= 'SELECT log_note FROM actions'

Важно заметить, что output функции (а значит и query($1)) должен быть всегда одинаковым и конкретизированным (нельзя вернуть все поля через *) - я возвращаю name.

3️⃣ В одном из запросов использовалась интересная функция STRING_TO_ARRAY, которая разбивает строку на массив. Я исследовал другие функции в PostgreSQL и там есть много полезных вещей, которые можно использовать для изменения данных на лету при запросе:

Простые функции - CAST() меняет тип данных на нужные, REGEXP_REPLACE() использует регекс для замены текста, CONCAT() соединяет строки.

GENERATE_SERIES() - c помощью этой функции вы можете создать последовательность с нужным шагом (может понадобиться для проектов с расписаниями).

Пример:

SELECT * FROM GENERATE_SERIES(1, 10, 2);

AGE() - cчитает интервал времени между текущей датой и указанной. Возвращает тип данных interval - 1 year 2 months 10 days

Пример:

SELECT age(timestamp '1990-05-23');

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

Пример:

SELECT JSONB_SET(profile_data, '{address, city}', '"Los Angeles"')
FROM users WHERE user_id = 1;
-- Result for profile_data: { "name": "John Doe", "address": { "city": "Los Angeles" } }



Кроме того, Supabase поддерживает различные extensions. К примеру с помощью plv8 вы можете создать JS функцию прямо в базе и вызывать ее, чтобы изменить данные для запроса или просто получить результат функции на фронт (вместо использования Toolbox). Созданными функциями легко управлять на отдельной странице Database - Functions.

Ставьте лайк и подписывайтесь, на следующей неделе разберем лекцию “Как составлять scope проекта, когда детали неясны”
  • 🔥 3
  • ❤ 2
  • 👍 1
More from @lowcodingdev
  1. Oct 4, 2026Фильмы являются важной частью моей жизни - одни учили меня как нужно и не нужно себя вести…
  2. Sep 22, 2026Не так давно я писал про новую роль, которая может подойти вам с опытом no-code разработки…
  3. Sep 15, 2026Пока описывал, как работает система в маркетинговом агентстве, понял, что уже и сам забыл,…
  4. Sep 10, 2026Автоматизация маркетингового агентства - часть 2 Следующим этапом стало построение сквозно…
  5. Sep 9, 2026У меня 2 оффтоп вопроса: 1. Почему никто не сделал ИИ агента тамагочи, который живет свою…
  6. Sep 8, 2026Автоматизация маркетингового агентства Год назад мне подкинули клиента (шатаут Эдуарду @e_…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →