[[:oktatas:web:express|< Express]] ====== Express - Sqlite 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 ===== Kezdés ===== Készítsünk egy projektet **lite** néven. mkdir lite cd lite npm init -y npm install sequelize sqlite3 lite/ |-app/ | `-database/ | `-database.js |-database.sqlite `-package.json A package.json fájlban javítsuk a type kulcs értékét, module-ra: { "type": "module" } Az adatbázisihoz kapcsolódás: import { Sequelize } from "sequelize"; export const sequelize = new Sequelize({ dialect: "sqlite", storage: "./database.sqlite3", }); await sequelize.authenticate(); Futtatás: node app/database/database.js ^ Sequelize() konstruktor paraméterezése ^^^^ ^ Név ^ Típus ^ Tulajdonság ^ Leírás ^ | database | sztring | opcionális | Adatbázis neve | | username | sztring | opcionális | Felhasználó azonosításhoz | | password | sztirng | opcionális | Jelszó azonosításhoz | | options | objektum | opcionális | További beállítások | | options.host | sztring | opcionális (alapértelmezett 'localhost') | Az adatbázis hostja | | options.port | szám | opcionális | Az adatbázis szerver portja | | options.dialect | sztring | opcionális | Milyen adatbázishoz kapcsolódunk | | options.username | sztring | opcionális | Felhasználónév azonosításhoz | | options.password | sztring | opcionális | Jelszó azonosításhoz | | options.database | sztring | opcionális | Adatbázis neve | | options.storage | sztring | opcionális | Adatbázis típusa | További opciók: * https://sequelize.org/api/v6/class/src/sequelize.js~sequelize#instance-constructor-constructor Esetleg egészítsük ki: import { Sequelize } from "sequelize"; export const sequelize = new Sequelize({ dialect: "sqlite", storage: "./database.sqlite3", }); try { await sequelize.authenticate() console.log('Ok') }catch (err) { console.error('Hiba!') console.error(err) } ===== Modell használata ===== import { Sequelize } from "sequelize"; const sequelize = new Sequelize({ dialect: "sqlite", storage: "database.db" }); 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 }); await Employee.create({ name: 'Erős István', city: 'Szeged', salary: 392 }); ===== A modell metódusai ===== Ha van egy Employee objektumunk, használhatjuk a CRUD műveletek elvégzésére. Az összes dolgozó lekérdezése: const emps = await Employee.findAll(); JSON formára: const res = await Employee.findAll(); console.log(res.map(e => e.toJSON())); Egy új dolgozó létrehozása: await Employee.create({ name: 'Erős István', city: 'Szeged', salary: 392 }); A 2-s azonosítójú dolgozó letöltése: const emp = Employee.findOne({ where: { id: 2 } }); A 2-s azonosítójú dolgozó nevének frissítése: const emp = await Employee.findOne({ where: { id: 2 } }); emp.name = "John Doe"; await emp.save(); A 3-s dolgozó törlése: const emp = await Employee.findOne({ where: { id: 3 } }); await emp.destroy(); ===== SQL utasítás használata ===== import { Sequelize } from "sequelize"; const sequelize = new Sequelize({ dialect: "sqlite", storage: "database.db" }); const [ results, metadata ] = await sequelize.query(` SELECT * FROM employees `); console.log(results); ===== Beállításfájlok ===== A beállításfájlokról komplexebb leírás: [[oktatas:web:express:beallitasok_tarolasa_es|Beállítások tárolása ES]] Létrehozzuk a Node.js projektet, benne az **app** könyvtár tartalmával és egy .env állománnyal. Szerkezet: app01/ |-app/ | `-database/ | `-database.js |-.env `-package.json A package.json fájlban a **type** kulcs értékét állítsuk **module**-ra. { "type": "module" } ==== Környezeti változó ==== Nézzük meg, hogyan tesszük a beállítások külön fájlba. Egy .env fájlt fogunk használni, amit a projekt gyökérkönyvtárában teszünk. npm install dotenv DB_DIALECT=sqlite DB_STORAGE=database.sqlite A DB_DIALECT kulcsban tároljuk, hogy milyen adatbázis típust akarunk használni, ami esetünkben Sqlite. A DB_STORAGE kulcsban mondjuk meg, hogy az Sqlite adatbázis állománynak mi legyen a neve. Készítsük el az **app/database/database.js** állományt: import dotenv from 'dotenv' dotenv.config() /* Kiíratjuk a .env fájl tartalmából a DB_DIALECT tulajdonságot: */ console.log(process.env.DB_DIALECT); Futtassuk: node app/database/database.js Megjelenik a DB_DIALECT tartalma: sqlite Kísérletképpen kiírathatjuk a DB_STORAGE kulcs értékét is. Van egy beállítás fájlunk, amiből ki tudjuk olvasni kulcsok értékeit. ===== Sqlite adatbázis beállítás fájlokkal ===== Most üzemeljük be az Sqlite adatbázist. Ehhez telepíteni kell a sqlite3 és az sequelize csomagot. npm install sqlite3 sequelize import dotenv from 'dotenv' dotenv.config() import { Sequelize } from 'sequelize' const sequelize = new Sequelize({ dialect: process.env.DB_DIALECT, storage: process.env.DB_STORAGE }) //Ellenőrzés try { await sequelize.authenticate() console.log('Ok') } catch (err) { console.error('Hiba!') console.error(err) } Futtassuk: node app/database/database.js Ha nem hibáztunk, a projekt gyökérkönyvtárában létrejön a **database.sqlite** állomány. ===== Memória adatbázis ===== Beállíthatunk memóriaadatbázist is. A memóriaadatbázis csak addig létezik, amíg fut a szerver. Ebben az esetben nem jön létre állomány, mivel minden csak a memóriában tárolódik. Memóriaadatbázisok például akkor hasznosak, ha tesztelni akarunk. DB_DIALECT=sqlite DB_STORAGE=:memory: ===== Forrás ===== * https://sequelize.org/docs/v6/getting-started/ (2024)