TGViewer
Грязный ноукодер Грязный ноукодер @lowcodingdev · 3.53K subscribers
Post #99 1.02K
Как сделать не виснующее ноукод приложение с БД в 1000000 строк?

Продолжаем говорить о SQL и сегодня разберем полезные советы о работе с SQL в Bubble.
Ранее я уже делал ряд постов об этом, поэтому не будем повторяться и посмотрим новые инсайты.

1️⃣ Для подключение к Supabase устанавливаем плагин SQL Connector и берем креды из Settings - Database. Далее формируем строку для плагина - postgres://User:Password@Host:Port/Database.

- Пример: postgres://postgres:YGe24reS51Sba@db.ekgfdgwertwerajnwqw.supabase.co:5432/postgres

2️⃣ Работая с большим объемом данных не обойтись без пагинации - ее можно сделать с помощью OFFSET и переменной ($1). Для показа следующей “страницы” добавьте к переменной число, указанное у вас в LIMIT. При пагинации обязательна сортировка данных, чтобы БД точно понимать какие именно записи идут следующими.

- ORDER BY created_date DESC LIMIT 200 OFFSET $1;

3️⃣ Переменные в запросах:

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

- Если вам нужно сделать запрос для поиска с различными фильтрами (переменными), которые могут быть пустыми, добавьте в условие проверку переменной - $1 IS NULL. Примеры условий для разных типов:
- - Текстовая переменная - (status LIKE '%' $1 '%' OR $1 IS NULL)
- - Числовая переменная - (telegram_id = $1 OR $1 IS NULL)
- - Массив - school_name = ANY(ARRAY[$1] OR $1 IS NULL) - $1=‘Harvard,Stanford’

- Если у вас есть проблемы с типом данных на стороне Bubble, смените тип переменной в SQL - $1::text или $1::int

4️⃣ Не бойтесь SQL, за меня на нем пишет ChatGPT. Даже 3.5 версии достаточно скормить структуру ваших таблиц (Table - Definition) и он сам напишет все нужные запросы за вас.

🔥Совет со звездочкой для самых-самых:

Кейс - я хочу выбрать из списка заказ и показать детали этого заказа.
Источником данных для карточки деталей заказа я использую выбранную запись из общего списка заказов, который основан на запросе get_orders. Тут нет проблем - жмем на заказ и используем This get_orders.
Но каждый запрос воспринимается как отдельный тип данных. Если я хочу из карточки счета перейти в заказ мне нужно либо использовать отдельный запрос get_this_order, либо брать весь список заказов и фильтровать его на стороне клиента, чтобы получить данные по конкретному заказу.

Первый способ вернет другой типа данных, который нельзя использовать для карточки товара (у нас там все завязано на get_orders). Второй же способ небезопасен (так как грузятся все данные на сторону клиента) и неэффективен (это может занять очень много времени). Что же делать?

Мы делаем универсальный запрос get_orders, куда добавляем еще один фильтр id=$1. Проблема в том, что UUID это жесткий 32 символьный формат и при попытке отправки пустой строки вы получите ошибку ($1 IS NULL тоже не поможет). Для обхода этой проблемы мы заменяем дефолтное пустое значение на валидный UUID и меняем условие. (id = $4 OR $4= '00000000-0000-0000-0000-000000000000’)


Спасибо вам, за то что читали мой блог весь этот год. ❤️‍🔥
Поздравляю всех с наступающим Новым Годом🎄, ставьте лайки и подписывайтесь, в следующем году дело примет серьезные обороты!
Telegram .DEV | No/low-code agency Недавно мы сделали интеграцию между Bubble и AWS RDS и хотели бы поделиться с вами ценными советами, которые мы не смогли найти в Интернете. Совет дня (Bubble — SQL-запрос): Используйте NULLIF($1, '') в запросах UPDATE/INSERT, чтобы избежать пустых текстовых…
  • 👍 15
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 →