Научете как да внедрите MySQL база данни във вашия проект Node.js

В този урок научавате как да използвате MySQL база данни във вашия Node.js проект с Docker. Ще създадете просто приложение, което ви позволява да събирате имейл адреси от хора.

Технологиите, използвани в този урок, са:

  • Node.js
  • Докер
  • Експрес
  • MySQL

Създайте структурата на проекта

Първата стъпка е да се създаде структурата на проекта. За момента имате нужда от:

  • Цялата папка, включително всички файлове.
  • Файл .env.
  • Файл с конфигурацията на сървър/база данни.

Така можете да създадете всички файлове и папки, както следва:

take nodejs-mysql
touch index.js
touch .env

Сега следващата стъпка е да стартирате MySQL.

Стартирайте MySQL с Docker

За да избегнете несъответствия и инсталиране на нови неща на вашата машина, ще използвате официалното изображение на Docker за MySQL.

Преди да продължите, изпълнете следната команда във вашия терминал:

docker run -p 3306:3306 --name nodejs-mysql -e MYSQL_ROOT_PASSWORD=pass -e MYSQL_DATABASE=emails_db -d mysql:5.7

Тази команда прави следните неща:

  1. Той изтегля изображението mysql:5.7 от DockerHub и след това го изпълнява.
  2. Той стартира MySQL базата данни на порт 3306.
  3. Той задава паролата на базата данни на pass.
  4. И накрая, създава нова база данни, наречена emails_db.

Сега можете да получите достъп до вашата база данни от терминала и от вашето приложение. Ако искате да стартирате контейнера с bash и да играете директно с MySQL, изпълнете следната команда:

docker container exec -it nodejs-mysql bash

След това стартирайте MySQL монитора, както следва:

mysql -u root -p

Ще бъдете подканени да въведете паролата. Въведете същата парола, която споменахте в първата команда по-горе. В този пример паролата е pass.

Сега можете да изпълнявате MySQL команди и да си играете с базата данни. Освен това сте готови да използвате MySQL във вашето приложение Node.js.

Инициализирайте зависимостите на проекта и инсталирането

Следващата стъпка е да инициализирате вашия Node.js проект и да инсталирате необходимите зависимости. Можете да инициализирате проекта със следната команда:

npm init -y

Тази команда инициализира вашия проект и автоматично довършва файла package.json със стойностите по подразбиране.

Зависимостите, от които се нуждаете за този проект, са mysql, express, express-validator и dotenv. Инсталирайте ги със следната команда:

npm install mysql dotenv express express-validator

Ще използвате пакета mysql, за да манипулирате вашата база данни. Също така ще използвате пакета express, за да създадете две крайни точки:

  • Прочетете данни.
  • Добавете данни към базата данни.

И накрая, имате нужда от пакета express-validator, за да дезинфекцирате въведеното от потребителя. Например, не бихте искали някой да добави SQL заявка вместо имейл адрес, защото това може да създаде проблеми.

Вече сте готови да създадете приложението!

Създайте приложението

Първата стъпка е да отворите файла index.js и да импортирате пакетите. По този начин добавете следните импортирания в горната част на файла:

const express = require('express');
const mysql = require('mysql');
const { body, validationResult } = require('express-validator');
const app = express();

require('dotenv').config();

Следващата стъпка е да отворите файла .env и да добавите подробности за базата данни като потребителско име, парола и име на базата данни:

DB_USER=admin
DB_PASSWORD=pass
DB_NAME=emails_db

Подробностите по-горе трябва да работят и за вас. Въпреки това, не се колебайте да ги промените.

Следващата стъпка е да създадете връзка с база данни в приложението. Отидете на index.js и добавете следния код:

const database = mysql.createConnection({
    user: process.env.DB_USER,
    password: process.env.DB_PASSWORD,
    database: process.env.DB_NAME
});

Сега можете да използвате базата данни за създаване на таблици, добавяне, редактиране и премахване на данни и други операции.

Инициализирайте базата данни

Трябва да инициализирате базата данни, като създадете нова таблица. Имате нужда от таблица, за да съхранявате имейлите на хората.

Така отворете файла index.js и добавете следния маршрут:

Сега, когато имате достъп до маршрута /init, приложението създава нова таблица, наречена emails, само ако тя вече не съществува. Таблицата съдържа следните полета:

  • An id
  • Името и фамилията на лицето
  • Имейл адресът

След като таблицата бъде създадена, можете да събирате имейл адреси от хора. Нека да видим как можете да направите това!

Добавете имейли

Една от най-важните части на приложението позволява на хората да се абонират за вашите услуги/бюлетин. Можете да го направите, като напишете следната част от кода в index.js:

Можете да видите, че този маршрут върши доста неща, така че нека го разгледаме стъпка по стъпка:

  1. Първо, вие позволявате на хората да направят POST заявка до /subscribe крайната точка.
  2. Второ, дезинфекцирате въведеното от хората, като използвате методите от пакета express-validator. Те се уверяват, че полетата не са празни и също така избягва входовете.
  3. Накрая проверявате дали има грешки. Ако има грешки, вие връщате тези грешки. В противен случай вие абонирате лицето за бюлетина/услугата.

Изображението по-горе показва пример за подаване на празни данни. Можете да видите, че получавате шепа грешки в зависимост от това какво не е наред със заявката.

От друга страна, ако направите заявка с валидни данни, абонатът се добавя към списъка. Вижте примера по-долу:

Следователно крайната точка работи правилно. Хората могат да се абонират за вашия имейл/услуга.

Вземете всички имейли

И накрая, имате нужда от маршрут, за да получите списък с всички събрани имейл адреси. Така добавете следния код в index.js:

SELECT * FROM emails SQL заявката избира всички записи от таблицата. Заявката връща следната информация за всяка заявка:

  • Идентификационният номер
  • Името и фамилията
  • Имейл адресът

Ако получите достъп до URL http://localhost:9898/, получавате всички абонати. По-долу можете да видите пример:

С този маршрут можете да видите всички хора, които са се абонирали чрез вашето приложение.

Забележка: Не е добра идея тази крайна точка да бъде достъпна за всички, защото разкривате лична информация. Следователно едно подобрение може да бъде да защитите тази крайна точка и да я направите достъпна само за себе си.

Почистете приложението

Преди да приключите, можете да подобрите приложението, като реорганизирате кода. Въпреки че може да е прекалено за малко приложение като това, помага, когато стане по-голямо.

Нека започнем с почистване на файла index.js. Отворете го и заменете всичко със следното:

Следващата стъпка е да създадете специално място за конфигурацията на базата данни. В корена на проекта създайте папката src. Можете да го направите по следния начин:

take src

Тази команда създава директорията и след това я отваря. В папката src създайте друг файл с име db.js. Отворете го и добавете следния код:

Във файла db.js конфигурирате базата данни и създавате връзка. След това го експортирате, за да може да се използва на други места.

И накрая, трябва да създадете контролерите и маршрутите. По този начин създайте следните папки и файлове от корена на проекта:

take src/controllers/controllers.js
take src/routes/routes.js

Сега сте готови да създадете маршрутите и да напишете контролерите.

Създайте маршрутите

Да започнем с маршрутите. Отворете файла routes.js и добавете следния код:

В този файл импортирате express, за да можете да създавате маршрутите. След това импортирате контролерите, за да можете да подадете конкретния контролер за всеки маршрут. След това импортирате функцията body от express-validator и създавате експресен рутер.

В следващите редове дефинирате маршрутите и предавате конкретните контролери. И накрая, експортирате router, за да можете да го използвате на други места.

Напишете контролерите

Последната стъпка е да напишете кода за контролерите. Всъщност имате кода от предишните стъпки, но трябва да ги съхраните като функции.

Вземете кода, който преди беше в index.js и го добавете, както следва:

Както можете да видите, кодът е същият, но сега се съхранява в отделни функции. След това, в края на файла, експортирате тези функции, за да можете да ги използвате във файла routes.js.

Приключихте с рефакторинга!

Стартирайте кода

За да стартирате приложението, отидете в корена на приложението и изпълнете следната команда:

node index.js

След това трябва да можете да добавяте нови абонати и да виждате съществуващите!

Можете да намерите пълния код на тази страница на GitHub.

Заключение

Това е само началото на приложението, но има много подобрения, които можете да добавите. Някои от подобренията могат да бъдат:

  • Добавяне на предната част за това приложение.
  • Защита на маршрута, който показва всички абонати.
  • Добавяне на тестове.
  • Позволяване на хората да създават индивидуални акаунти и да събират имейл адреси.

Уведомете ме в коментарите, ако искате да създам и предната част. Ако има достатъчно интерес, ще го направя!