[[: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.