Tartalomjegyzék

< Express

Express - Sqlite ES

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:

package.json
{
  "type": "module"
}

Az adatbázisihoz kapcsolódás:

app/database/database.js
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:

Esetleg egészítsük ki:

app/database/database.js
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

app/database/database.js
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

app/database/database.js
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: 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.

package.json
{
  "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
.env
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:

app/datbase/database.js
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
app/database/database.js
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.

.env
DB_DIALECT=sqlite
DB_STORAGE=:memory:

Forrás