172 похожих чатов

Привет народ. Кто-то юзал библиотеку postgres.js (https://github.com/porsager/postgres) ? Стоит ли

ее тащить в прод или использовать старый добрый slonik?

17 ответов

7 просмотров

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

Danila- Автор вопроса
D
юзал, но это долбанная магия, из-за шаблонной стро...

слоник вроде pg под капотом использует, не?

Danila
слоник вроде pg под капотом использует, не?

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

Danila- Автор вопроса
D
Основная проблема в использовании шаблонных строк....

В том то и цель, чтобы смотреть в будущее. Но можете пример привести, где шаблонные строки не дали вам то, что дали классические параметризированные запросы? Надо глянуть, может в слонике для простых запросов можно использовать шаблонные строки, для сложных напрямую к pg параметризованные. Может это облегчило бы вам боль?)

Danila
В том то и цель, чтобы смотреть в будущее. Но може...

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

Danila- Автор вопроса
D
проблемы начинаются когда надо начинать строить за...

Обновление гита было полгода назад глобальное, остальные по мелочи дней 10-20 назад. Мельком исходники глянул, понравилось. Но тайные грабли всегда есть, поэтому решил спросить. А что по слонику? Он тоже не позволил сложные решения реализовать? И еще, у вас может есть гит, где вы сложные решения реализовывали? Я бы с удовольствием глянул:)

Danila
Обновление гита было полгода назад глобальное, ост...

нет, я не опенсорсник. Пробуйте, если есть время. Лишний опыт не повредит.

Danila- Автор вопроса
D
нет, я не опенсорсник. Пробуйте, если есть время. ...

Да вот пока нет времени, а проект уже в работе… вот думал что-то выбрать что-бы код попроще выглядел

У нас typescript

Danila- Автор вопроса
Max Makarov
У нас typescript

Ну так можно самому типы вешать на возвращаемые поля. И это не сильно затратно по времени.

Danila
Ну так можно самому типы вешать на возвращаемые по...

Зачем? Когда можно гененировать их из бд. У тебя не будет никогда инконсистентности данных, гарантируется single point of truth

Нет, там нет никакого оверхеда. Один из наших разработчиков контрибьютил эту штуку. Плюс она у нас в проде используется. Pgtyped ничего кроме генерации типов для typescript не делает

Danila- Автор вопроса
Max Makarov
Нет, там нет никакого оверхеда. Один из наших разр...

🤔, ладно, потестим... штука интересная. Спасибо

Там два варианта использования. Рекомендую использовать .sql файлы и импортировать запросы вот так:

а сам запрос выглядит вот так Удобно что нет мешанины из $1, $2, $3, $5, $6 в запросе. И query variables также типизируются.

Danila- Автор вопроса
Danila- Автор вопроса
Max Makarov
screenshot Там два варианта использования. Рекомендую использ...

о, да! тут оверхед почти минимальный (0.1-0.8мс)... вот это интересно... не очень привычно с .sql файлами, но интересно... благодарю :)

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
Кибер Бомж
8
Карта сайта