Работал ли с MySQL

Ответ

Да, работал. В Node.js для работы с MySQL обычно использую пакет mysql2 (более современная альтернатива mysql) или ORM типа Sequelize.

Пример подключения и простого запроса с mysql2:

const mysql = require('mysql2/promise');

async function queryExample() {
  const connection = await mysql.createConnection({
    host: 'localhost',
    user: 'root',
    database: 'test_db',
    password: 'password'
  });

  const [rows] = await connection.execute('SELECT * FROM users WHERE id = ?', [1]);
  console.log(rows);
  await connection.end();
}
queryExample();

Основные моменты:

  • Поддержка промисов (mysql2/promise) для async/await.
  • Параметризованные запросы для защиты от SQL-инъекций.
  • Опыт с миграциями, индексами, JOIN, транзакциями.
  • Для сложных проектов предпочитаю Sequelize или TypeORM.

Ответ 18+ 🔞

А, ну это ж классика, ёпта! Работал, конечно, работал. В Node.js с этой самой MySQL, как без неё-то. Обычно беру пакет mysql2 — это типа более свежая версия старого mysql, чтоб не выёбывался. Ну или, если проект серьёзный, то ORM вроде Sequelize подключаю, чтобы не париться с голыми запросами.

Вот, смотри, как обычно выглядит этот цирк с подключением на mysql2:

const mysql = require('mysql2/promise');

async function queryExample() {
  const connection = await mysql.createConnection({
    host: 'localhost',
    user: 'root',
    database: 'test_db',
    password: 'password'
  });

  const [rows] = await connection.execute('SELECT * FROM users WHERE id = ?', [1]);
  console.log(rows);
  await connection.end();
}
queryExample();

Что тут важно, блядь, чтобы не накосячить? Во-первых, бери промисы (mysql2/promise), а то заебёшься с коллбэками, как будто на дворе 2012-й год. Во-вторых, всегда, сука, используй параметризованные запросы, вот эти знаки вопроса ?. Это чтобы тебя какой-нибудь умник не взломал через SQL-инъекцию, а то будет тебе хиросима, а не база данных.

Ну и в целом, опыт есть: и миграции эти ебучие писал, и индексы настраивал, чтобы всё летало, и JOIN'ы составлял такие, что сам потом полчаса разбирался, что написал. С транзакциями тоже работал — чтобы либо всё сохранилось, либо откатилось нахуй, если где-то ошибка.

А если проект реально большой и сложный, то лучше взять что-то вроде Sequelize или TypeORM. Это, конечно, свои грабли, но зато не нужно каждый раз вручную SQL-запросы из пальца высасывать, э бошка думай.