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