[[:oktatas:web:express|< Express]]
====== Express - MariaDB ES ======
* **Szerző:** Sallai András
* Copyright (c) 2025, Sallai András
* Szerkesztve: 2025
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]]
* Web: https://szit.hu
===== VSCode =====
Ajánlott bővítmények:
* SQLTools
* SQLTools MySQL/MariaDB/TiDB
Az akciósávon létrejön a henger alakú ikon. Itt tudunk
adatbázis-kapcsolatokat felvenni.
Az adatbázis-kapcsolat a következő helyen tárolódik:
* .vscode/settings.json
===== A dora projekt =====
==== Projekt elkészítése ====
mkdir dora
cd dora
A kezdeti könyvtárszerkezet:
dora/
`-database/
`-create.sql
==== Adatbázis ====
Készítsünk egy adatbázist.
-- adatbázis létrehozása
create database dora
character set utf8
collate utf8_hungarian_ci;
-- felhasználó létrehozása
grant all privileges
on dora.*
to dora@localhost
identified by 'titok';
==== Alkalmazás ====
Tegyük a projektet Node.js projektté.
npm init -y
npm install sequelize mariadb
dora/
|-app/
| `-database/
| `-database.js
|-database.sql
`-package.json
A package.json fájlban javítsuk a type kulcs értékét, module-ra:
{
"type": "module"
}
Az adatbázishoz kapcsolódás:
import { Sequelize } from "sequelize";
const sequelize = new Sequelize({
dialect: "mariadb",
host: "localhost",
port: 3306,
username: "emp",
password: "titok",
database: "emp"
});
await sequelize.authenticate();
Futtatás:
node app/database/database.js
A database.js fájlt nem kötelező az app/database/ könyvtárba tenni, de később oda fog kerülni.
A Sequelize() konstruktor több módon is paraméterezhető.
Ahogy fentebb is használtuk, megadhatunk csak opciókat,
de az opciók előtt megadhatjuk az adatbázis nevet,
felhasználónevet és jelszót. Szintaxis:
Sequelize(database: string, username: string, password: string, options: object)
Lehetséges példa:
const Sequelize = require('sequelize');
const sequelize = new Sequelize('emps', 'emps', 'titok', {
host: 'localhost',
port: 3306,
dialect: 'mariadb'
});
===== Hibakezelés =====
Esetleg egészítsük ki:
import { Sequelize } from "sequelize";
const sequelize = new Sequelize({
dialect: "mariadb",
host: "localhost",
port: 3306,
username: "emp",
password: "titok",
database: "emp"
});
try {
await sequelize.authenticate()
console.log('Ok')
}catch (err) {
console.error('Hiba!')
console.error(err)
}
===== Modell létrehozása =====
import { Sequelize } from "sequelize";
const sequelize = new Sequelize({
dialect: "mariadb",
host: "localhost",
port: 3306,
username: "emp2",
password: "titok",
database: "emp2"
});
const Employee = sequelize.define('employee', {
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
allowNull: false,
primaryKey: true
},
name: {
type: Sequelize.STRING,
allowNull: false
},
city: {
type: Sequelize.STRING,
allowNull: true
},
salary: {
type: Sequelize.DOUBLE,
allowNull: true
}
});
await sequelize.sync({
alter: true
});
Employee.create({
name: 'Erős István',
city: 'Szeged',
salary: 392
});
Az alter: true az adatok megtartásával szinkronizál.