😍
Мы нашли шикарную альтернативу TypeORM, Prisma и Knex 😍
Вот вроде, 2023 год, вроде, Node JS один из самых хайповых и быстрорастущий стэков, но блять до сих пор нет понятного ответа на: "Какую
хорошую ORM / Query Builder выбрать?"
До недавнего времени я сказал бы: "Все гавно, выбери Go (шутка)"
TypeORM забагованный, непредсказуемый, неоптимизированный и неудобный (создание класса и дальнейшее присвоение значения параметрам через .... зачем вообще тогда было использовать TypeScript...)
Prisma неплоха, но синтасис настолько далеко от SQL , что я бы назвал его "PrismaQL", непредсказуемость тоже присутствует, Rust байндинг, который требуется для запуска и интерпретации "PrismaQL" в SQL тоже жрет ресурсы и недоступен в некоторых средах (например, serverless) и своя собственная схема за рамки которой ты никак не выйдешь, если тебе понадобится какая-нибудь особенная фича PostgreSQL
Knex еще более менее (им я и пользовался) по какой-то причине практически нет ответов на StackOverflow и самое главное – у него очень плохая поддержка TypeScript (когда .leftJoin возвращает T[] вместо T[] | null это для меня красный флаг)
В итоге, после долгих поисков и сомнений ответ наконец-то нашелся!!!
🎉 Kysely 🎉
Это проооосто потрясающий Query Builder:
– Типизация невероятно сильная: .with, subquery, json_agg, parametric condition, CASE WHEN – все это и очень много другого абсолютно автоматически и правильно типизировано
– Очень понятный и похожий на SQL синтаксис (синтаксис выражений и предикатов лучший из мною увиденных)
– Ему достаточно интроспекции типов из БД, чтобы начать работать (мы используем
kysely-codegen), поэтому очень просто интегрировать в любой уже существующий проект (мы используем его в новых фичах и при рефакторинге переписываем старые, а все легаси по-прежнему на TypeORM / Knex)
– Супер легко расширять колонки интроспекции своими кастомными типами (например, брендированными типами)
– Можно самому полнолстью настроить пуллы (мы для внедрения в проект с TypeORM просто переиспользуем пулл из самого TypeORM)
Короче, если вы хотите крутой Query Builder я теперь на 100% могу посоветовать вам Kysely
P.S.
Я болел последние пару месяц, но вот наконец-то выздоравливаю, поэтому постепенно начну больше писать постов, а писать есть о чем – мы недавно запустили крупный High Load проект и постепенно переносим на него нагрузку с легаси системы
Так что ждите и мощной вам прокачки 💪
#nodejs #ts #orm #postgresql #top #hot