SPRINT 09 . Работа с базами данных. Создание базы данных и подключение к базе.
Материалы
Текст
Подключение Node.js к базе данных MySQL
Сегодня мы рассмотрим кейс, который в реальном программировании вам придется делать достаточно часто — это подключаться к базе данных и выполнять в ней (базе) различные запросы. Для обучения я подготовил тестовую базу данных, которая содержит таблицу user и данные :

Теперь перейдем к node.js. Для начала выполним установку модуля, который отвечает за подключение к базе данных.
npm install mysql
Посмотреть и прочитать документацию по npm пакету можно здесь
Теперь подключим модуль mysql в файл node.js:
const mysql = require('mysql');
Следующий этап — конфигурация подключения. Делается это следующим образом:
const conn = mysql.createConnection({
host: "server.mysql.tools",
user: "nodetest",
database: "test_database",
password: "XXXYYY"
});
Здесь параметры host – адрес сервера где расположена база данных. User – имя пользователя базы данных, database – имя базы данных, password – пароль.
Если вы используете базу данных провайдера — то эти данные доступны вам в настройках базы. Если локально (Denwer, OpenServer) — то имя базы вы знаете поскольку создавали ее, логин скорее всего root, а пароль — или пустая строка или root.
Итак, внесите данные и продолжаем.
Следующий этап — создание подключения. Пишем в коде:
conn.connect(function (err) {
if (err) {
return console.error("Ошибка: " + err.message);
}
else {
console.log("Подключение к серверу MySQL успешно установлено");
}
});
И запускаем приложение:
node app.js
Если вышло сообщение - "Подключение к серверу MySQL успешно установлено" то мы подключились к базе данных успешно. Если выскочила ошибка — для начала внимательно читаем ошибку, а затем устраняем ее.
После подключения, напишем запрос и выполним его. Сам запрос, для удобства — вынесем в отдельную переменную query.
let query="SELECT * FROM user";
conn.query(query, (err, result, field) =>{
console.log(err);
console.log(result);
// console.log(field);
});
Если вы были внимательны, то заметили что формат conn.query – метода, который выполняет запрос, похож на метод подключения к базе. Метод принимает одинаковые параметры — err, result… Это распространенная практика, поэтому вы часто будете замечать данный формат. Итак, err – ошибки, которые возникли в ходе запроса, а result – результат запроса к базе данных MySQL, field – информация о полях таблицы.
Мы получаем вывод в формате:
[
RowDataPacket {
id: 1,
firstname: 'alex',
lastname: 'Test',
email: 'test@ua',
reg_date: 2020-04-14T05:15:30.000Z
}
]
пусть вас не смущает RowDataPacket – обращаться к результатам выборки вы можете так, как к обычному массиву.
После того, как мы завершили работу с таблицей – необходимо выполнить закрытие соединения с базой данных MySQL. Формат нам знакомый, используем метод end:
conn.end( err => {
if (err) {
console.log(err);
return err;
}
else {
console.log('Database ----- Close');
}
});
Подведем итог — сегодня мы рассмотрели кейс подключения к базе данных с помощью Node.js и совершили выборку данных с помощью запроса.
TASKS
Данная работа выполняется без шаблона. Работа выполняется в файле app.js.
Сервер при получении GET запроса и параметра task который равен 2, возвращает все firstname из базы данных itgid_nodecourse таблицы user ( данные для подключения — на форуме). Данные должны быть возвращены в виде массива ['Гермиона', 'Рон' … причем массив должен быть преобразован в строк с помощью команды JSON.sringify.
Схема логики приведена ниже.

Сервер при получении GET запроса и параметра task который равен 3, возвращает все email из базы данных itgid_nodecourse таблицы user ( данные для подключения — на форуме). Данные должны быть возвращены в виде массива причем массив должен быть преобразован в строк с помощью команды JSON.sringify.