[[:oktatas:web:back-end_framework:express|< Express]]
====== Express - MariaDB adatbázis ======
* **Szerző:** Sallai András
* Copyright (c) 2023, Sallai András
* Szerkesztve: 2024
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]]
* Web: https://szit.hu
===== Kliens =====
mysql
===== Függőségek =====
pnpm install mariadb
===== Dolgozók adatbázisban =====
const mariadb = require('mariadb');
const connectonString = {
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_NAME,
connectionLimit: 5
}
const pool = mariadb.createPool(connectonString)
async function getConnection() {
return await pool.getConnection();
}
async function getEmployees(conn) {
const sql = 'select * from employees';
return await conn.query(sql);
}
async function getEmployee(conn, id) {
const sql = 'select * from employees where id=?';
return await conn.query(sql, [id]);
}
async function createEmployee(conn, emp) {
const sql = 'insert into employees ' +
'(name, city, salary) ' +
'values (?, ?, ?)';
return await conn.query(sql,
[emp.name, emp.city, emp.salary]);
}
async function deleteEmployee(conn, id) {
const sql = 'delete from employees ' +
'where id=?';
return await conn.query(sql, [id]);
}
async function updateEmployee(conn, emp, id) {
const sql = 'update employees set ' +
'name=?, city=?, salary=? ' +
'where id=?';
return await conn.query(sql, [emp.name, emp.city, emp.salary, id]);
}
module.exports = {
getConnection,
getEmployees,
getEmployee,
createEmployee,
deleteEmployee,
updateEmployee
}
==== Dolgozó hozzáadása ====
async store(req, res) {
console.log(req.body);
if(!req.body.name) {
res.status(400);
res.json({
success: false,
message: 'Bad request'
});
}
const conn = await getConnection();
const result = await createEmployee(conn, req.body);
const id = Number(result.insertId)
const employee = await getEmployee(conn, id);
res.status(201)
await res.json({
success: true,
message: employee
});
},
==== Ellenőrzés ====
Küldjünk egy HTTP klienssel egy felhasználót:
http post localhost:8000/api/employees
name='aaaa' city='Szeged' salary=357
Indítsuk el a MariaDB-t:
mysql
Megnézhetjük a létező adatbázisokat:
> show databases;
Kapcsolódjunk az emp adatbázishoz:
> use emp
Nézzük meg milyen kollekcióink vannak:
> show tables;
> select * from employees;
A kimenet ehhez hasonló kell legyen:
==== Dolgozók lekérdezése ====
async index(req, res) {
const sql = 'select * from employees';
await pool.query(sql, (err, rows) => {
res.json({
success: true,
data: rows,
message: 'Ok'
});
})
},
==== Dolgozó törlése ====
async delete(req, res) {
if(!req.params.id) {
res.status(400);
res.json({
success: false,
message: 'Bad request'
});
}
const id = req.params.id;
const conn = await getConnection();
const result = await deleteEmployee(conn, id);
res.status(200);
res.json({
success: true,
data: result.affectedRows,
message: 'Ok'
});
},
==== Dolgozó frissítése ====
async update(req, res) {
if(!req.params.id || !req.body.name) {
res.status(400);
res.json({
success: false,
message: 'Bad request'
});
}
const id = req.params.id;
const conn = await getConnection();
await updateEmployee(conn, req.body, id);
const employee = await getEmployee(conn, id);
res.status(200);
res.json({
success: true,
body: employee,
message: 'Ok'
});
}