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

task 1

Данная работа выполняется без шаблона. Работа выполняется в файле app.js.

task 2

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

Схема логики приведена ниже.

task 3

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

task 4
Материалы юнита доступны после покупки курса
task 5
Материалы юнита доступны после покупки курса