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

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

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

17 ответов

13 просмотров

юзал, но это долбанная магия, из-за шаблонной строки там существенные архитектурные недостатки гибкости, и проблемы с типами, особенно когда дело касается хранимок, поэтому никаких просагеров и слоников, только 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 файлами, но интересно... благодарю :)

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта