🐱
Node.js + TypeScript + SQL = разочарование... но надежда естьЯ уже давно пытаюсь найти некоторый оптимум в работе с SQL-ными базами на Node.js + TypeScriptКак я уже писал – ORM я не люблю, а вот что у нас с SQL Builder и Typed SQL?На ум впервую очередь приходит Knex, но:Во-первых, хоть у него и есть поддержка TypeScript, он мало что умеет с ним делать (не умеет в alias; select только через ублюдскую конструкцию db.ref(...).withSchema(...) и тоже часто без типизации; where + join = боль)Во-вторых, и это, на мой взгляд, невероятно дико, вы вообще практически не найдете никакого контента на тему работы Knex + TypeScript, даже на stackoverflow (напомню, 17к звезд на Github)Проекты, которые меня интересуют и которые я буду внедрять в ближайшее время:.
kysely – Knex, но который сразу написан на TS и умеет в то, что не умеет Knex.
pgtyped – пишите SQL, запускаете клиент pgtyped, он проверяет что это корретный SQL по отношению именно к вашей БД и выгружает типы.
drizzle – хоть это и ORM, но работает она как SQL Builder.
slqc – потрясающая библиотека для Go, в которой сейчас ведут добавление TypeScript (поэтому пока не готова, но надо следить)Проблема этих технологий: они немного сыроваты и о них только начинают говорить в медиа (
1,
2), но это точно то направление, куда стоит смотреть
Ок, а что если у вас уже Knex, ORM или даже чистый SQL и пересесть не получится?На данный момент мои решением являются интеграционные тесты.Причем я сделал такой сэтап, который позволяет мне написать интеграционный тест за пару минут и проверить что все запросы правильно отрабатывают. И это не считая всех остальных преимуществ интеграционного тестирования.Обязательно поделюсь всеми моими настройками, потому что я уже перенес их на 4 крупных проекта и они везде работают прям как надо.А чем пользуетесь вы?