Unit 9. Работа с базами данных. Создание базы данных и подключение к базе.

Подключение 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 и совершили выборку данных с помощью запроса.

Домашнее задание

Загрузка ДЗ на проверку возможна только после приобретения курса.

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.
Задача доступна после приобретения курса.

Следи за новостями курсов на нашем канале

Открыть

Правила оформления домашних заданий

Открыть

Форум по задачам

Forum