Что использовал помимо JavaScript/TypeScript в контексте разработки на Node.js?

Ответ

В разработке на Node.js, помимо JavaScript/TypeScript, я постоянно работаю с рядом других языков и технологий, которые интегрируются в стек:

  1. SQL (через диалекты): Для реляционных БД (PostgreSQL, MySQL) пишу запросы, часто используя ORM/query-билдеры типа Prisma или Knex.js. Например, сложные JOIN-запросы для аналитических отчетов.

    -- Пример запроса, который может быть частью миграции или сырого запроса в Node.js
    SELECT users.id, users.email, COUNT(orders.id) as order_count
    FROM users
    LEFT JOIN orders ON users.id = orders.user_id
    WHERE users.created_at > NOW() - INTERVAL '30 days'
    GROUP BY users.id;
  2. NoSQL-запросы/агрегации: Для MongoDB пишу агрегационные пайплайны, которые выполняются на стороне базы для эффективной обработки данных.

  3. Шаблонизаторы (Pug/EJS): Хотя сейчас чаще REST/GraphQL API, для SSR или админ-панелей использовал Pug (бывший Jade) для генерации HTML на сервере.

  4. Bash/Shell скрипты: Для автоматизации деплоя, управления Docker-контейнерами, запуска миграций или cron-задач на сервере.

    # Пример скрипта для резервного копирования БД перед деплоем
    #!/bin/bash
    BACKUP_FILE="backup_$(date +%Y%m%d_%H%M%S).sql"
    pg_dump -U $DB_USER $DB_NAME > /backups/$BACKUP_FILE
  5. GraphQL SDL: При работе с Apollo Server или TypeGraphQL описываю схемы данных на языке GraphQL Schema Definition Language.

    type User {
      id: ID!
      email: String!
      posts: [Post!]!
    }

Это неотъемлемая часть работы full-stack или бэкенд-разработчика на Node.js, где нужно уметь работать со всей экосистемой, а не только с JavaScript.

Ответ 18+ 🔞

Ёпта, ну ты представь, сидит такой разработчик на Node.js, и вроде как JavaScript/TypeScript — его основной хлеб. Но блядь, это же как машину водить: одной педалью газа не обойдёшься, нужны ещё и тормоза, и руль, и иногда даже дворники, когда дождь идёт. Так и тут — вокруг целая куча других языков и технологий, которые лезут в твой стек, хочешь ты того или нет. И волнение ебать, потому что если нихуя не знаешь, то проект накрывается медным тазом.

Вот, например, SQL (через его диалекты). Ты думаешь, что ORM типа Prisma всё за тебя сделает? Ага, щас. Рано или поздно вылезет какая-нибудь хитрая жопа с аналитическим отчётом, и придётся лезть в сырые запросы с JOIN'ами, которые на три экрана. Чувствуешь себя тогда не программистом, а каким-то шаманом, который уговаривает базу данных не сдохнуть.

-- Вот смотри, обычный такой запрос, который может в миграции сидеть или прямо в коде.
SELECT users.id, users.email, COUNT(orders.id) as order_count
FROM users
LEFT JOIN orders ON users.id = orders.user_id
WHERE users.created_at > NOW() - INTERVAL '30 days'
GROUP BY users.id;

А потом идёт NoSQL, типа MongoDB. Тут уже не SQL, а свои приколы. Начинаешь писать агрегационные пайплайны, и через полчаса понимаешь, что создал какую-то пиздопроебибную конструкцию, которую даже ты сам через день не поймёшь. Но зато, если правильно собрал, работает быстрее, чем ты успеваешь сказать «ёперный театр».

Дальше — шаблонизаторы вроде Pug (бывший Jade). Ну, это уже немного старьё, конечно. Сейчас все на SPA и API помешаны. Но если вдруг нужно какую-нибудь админку на сервере отрендерить или старый проект поддержать — привет, синтаксис без угловых скобок. Сначала охуеваешь, а потом втягиваешься.

А вот Bash/Shell скрипты — это вообще отдельная песня. Ты вроде как джаваскриптер, а тут тебе нужно автоматизацию для деплоя писать, с докером общаться, крон-задачи настраивать. Чувствуешь себя немножко сисадмином, который забыл, как выйти из vim.

#!/bin/bash
BACKUP_FILE="backup_$(date +%Y%m%d_%H%M%S).sql"
pg_dump -U $DB_USER $DB_NAME > /backups/$BACKUP_FILE

И конечно, куда же без GraphQL SDL. Описываешь схемы, типы, и вроде всё красиво и типобезопасно. А потом смотришь на кучу резолверов и думаешь: «Чёрта в душу, зачем я вообще за это взялся?». Но когда фронтендеры начинают сами себе данные запрашивать ровно в том виде, в каком им надо, — понимаешь, что оно того стоило.

type User {
  id: ID!
  email: String!
  posts: [Post!]!
}

Короче, суть в чём. Быть разработчиком на Node.js — это не только про JS/TS. Это про умение не охуеть от этого овердохуища разных технологий вокруг и как-то заставить их всех работать вместе. Как тот самый чувак, который жонглирует тарелками, только тарелки — это базы данных, скрипты и схемы. Уронишь одну — будет вам хиросима. Но когда всё летает — красота.