🐱
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 крупных проекта и они везде работают прям как надо.
А чем пользуетесь вы?