
Работа с базой из Node.js: 7 ошибок, которые роняют прод
Утечки соединений, забытый await, SQL-инъекции через шаблонные строки и таймауты пула — разбираем ошибки при работе с PostgreSQL и MySQL из Node.js и как их не допустить.

Утечки соединений, забытый await, SQL-инъекции через шаблонные строки и таймауты пула — разбираем ошибки при работе с PostgreSQL и MySQL из Node.js и как их не допустить.

Пул на 10 соединений, отсутствие таймаутов и один незакрытый транзакционный клиент кладут сервис под первой же нагрузкой. Что проверить в слое доступа к БД до релиза.

Стрим, который работает на 10 МБ файле в разработке, кладёт процесс на гигабайтной выгрузке в проде. Разбираем, что проверить в обработке ошибок, backpressure и очистке ресурсов до релиза.

Один и тот же способ чтения файла на 2 ГБ либо держит память под контролем, либо роняет процесс по OOM. Разбираем четыре подхода к работе со стримами и их цену.

Почему setTimeout(fn, 0) выполняется позже, чем Promise.then, и как это использовать: разбор порядка задач в событийном цикле на реальных приёмах для браузера и Node.js.

setTimeout с нулём отработал позже, чем промис, добавленный после него. Разбираем очереди задач и микрозадач в V8, чтобы вы перестали угадывать порядок вывода.

Классы в JavaScript — это синтаксический сахар над прототипами, но выбор между ними влияет на приватность полей, наследование и отладку. Разбираем, когда что писать.

Почему setTimeout с нулём срабатывает позже промиса, зачем await внутри forEach не ждёт и как один тяжёлый цикл замораживает весь интерфейс. Разбираем типичные ошибки с event loop.

Стрелочные функции ломают методы, забытый new портит this, а общий массив в прототипе течёт между всеми экземплярами. Разбираем частые ошибки с прототипами и классами и показываем, как их не допустить.

Класс в JS — синтаксический сахар над прототипами, и это протекает: наследование ломается на стрелках, приватность оказывается не приватной, а сравнение через instanceof подводит на границах. Чек-лист перед релизом.

Замыкание — не абстракция из учебника, а инструмент с ценой. Разбираем, где оно уместнее класса и модуля, а где тихо держит память и мешает сборщику мусора.

Когда переменная в цикле «залипает» на последнем значении, а обработчик события помнит уже неактуальные данные — виноваты замыкания и область видимости. Разбираем, как использовать их осознанно.