oktatas:web:back-end_framework:express:mongodb_adatbazis
Tartalomjegyzék
Express - MongoDB adatbázis
- Szerző: Sallai András
- Copyright © Sallai András, 2023
- Web: https://szit.hu
Szerver
Windows Chocolatey
choco install mongodb
A szerver automatikusan elindul.
Ellenőrzés:
sc query sc query | more sc query mongodb
Linuxon
Végezzük el az előkészületeket a weboldal szerint:
apt install mongodb-org
systemctl status mondgod
Kliens
Linuxon:
mongo
Docker
Töltsük le a képfájlt:
docker pull mongodb/mongodb-community-server
Indítsunk belőle konténert:
docker run --name mongo -d mongodb/mongodb-community-server:latest
Futó konténerek kezelése:
docker container ls
Kapcsolódás a szerverhez:
docker exec -it mongo mongosh
Függőségek
A Mongoose egy dokumentum leképező rendszer, egy ODM azaz Object-Document Mapping.
pnpm install mongoose
Dolgozók adatbázisban
- app/models/database.js
const mongoose = require('mongoose'); const conString = 'mongodb://127.0.0.1:27017/emp'; mongoose.connect(conString); const employeeSchema = new mongoose.Schema({ name: { type: String, required: true }, city: { type: String, required: true }, salary: { type: Number, required: true } }); const Employee = mongoose.model('Employee', employeeSchema); module.exports = { Employee };
- app/controllers/employeecontrollers.js
const { Employee } = require('../models/database'); //... async store(req, res) { console.log(req.body); if(!req.body.name) { res.status(400); res.json({ success: false, message: 'Bad request' }); } const newEmployee = new Employee(req.body); const insertedEmployee = await newEmployee.save(); res.status(201) res.json({ success: true, message: insertedEmployee }); },
A newEmployee.save() utasítást muszáj await előtaggal, mert másként nem kapjuk meg a beszúrt adatokat.
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 MongoDB Shell-t:
mongo
Megnézhetjük a létező adatbázisokat:
> show dbs
Kapcsolódjunk az emp adatbázishoz:
> use emp
Nézzük meg milyen kollekcióink vannak:
> show collections
A modellek kollekciókra képződnek le.
> db.employee.find()
A kimenet ehhez hasonló kell legyen:
{ "_id" : ObjectId("647ca006579fd6808558cfa7"), "name" : "aaaa", "city" : "Szeged", "salary" : 357, "__v" : 0 }
Dolgozók lekérdezése
- app/controllers/employeecontrollers.js
async index(req, res) { const allEmployees = await Employee.find(); res.json({ success: true, data: allEmployees, message: 'Ok' }); },
Dolgozó törlése
- src/controllers/employeecontrollers.js
async delete(req, res) { if(!req.params.id) { res.status(400); res.json({ success: false, message: 'Bad request' }); } const id = req.params.id; const deletedEmployee = await Employee.findByIdAndDelete(id); res.status(200); res.json({ success: true, data: deletedEmployee, message: 'Ok' }); },
Dolgozó módosítása
- app/controllers/employeecontrollers.js
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; await Employee.updateOne({ _id }, req.body); const updatedEmployee = await Employee.findById(_id); res.status(200); res.json({ success: true, body: updatedEmployee, message: 'Ok' }); }
Felhasználó
- app/models/database.js
const mongoose = require('mongoose'); const conString = 'mongodb://127.0.0.1:27017/emp'; mongoose.connect(conString); const employeeSchema = new mongoose.Schema({ name: { type: String, required: true }, city: { type: String, required: true }, salary: { type: Number, required: true } }); const userSchema = new mongoose.Schema({ username: { type: String, required: true }, email: { type: String, required: true }, password: { type: String, required: true }, }); const Employee = mongoose.model('Employee', employeeSchema); const User = mongoose.model('User', userSchema); module.exports = { Employee, User };
Linkek
oktatas/web/back-end_framework/express/mongodb_adatbazis.txt · Utolsó módosítás: 2024/05/21 20:24 szerkesztette: admin