Andmebaasiga sidumine

Esimesena me registreerime ja logime end sisse https://cloud.mongodb.com/

Pärast me läheme Database Access ja lisame sinna uue kasutajad

npm i mongoose
npm i dotenv

Loome .env faili ja sinna sisse kirjutame MONGODB_URL = <kirjutame stringi mida me saime>

Loome models/game.js, sinna sisse me kirjutame

const mongoose = require('mongoose');

const gameSchema = new mongoose.Schema({
    id: {
        type: Number,
        required: true,
        unique: true
    },
    name: {
        type: String,
        required: true
    },
    price: {
        type: Number,
        required: true
    }
});


module.exports = mongoose.model('Game', gameSchema);

Pärast läheme server.js faili sisse ja lisame

const mongoose = require('mongoose');
const Game = require('./models/game');
require('dotenv').config();
const uri = process.env.MONGODB_URI;

Pärast seda lisame veel

mongoose.connect(uri)
    .then(() => console.log('MongoDB connected'))
    .catch(err => console.log("Error connecting to MongoDB:", err));

ja pärast seda kõikke lisamist me saame ümberkirjutame meie API´si, peab tulema midagi

//Saame kõik mänge
app.get('/games', async (req, res) => {
    try {
        const games = await Game.find();
        res.json(games);
    } catch (error) {
        res.status(500).json({ message: error.message });
    }
});

//lisame mängu näiteks 
//.\xh.exe -v http://localhost:5001/games name=Dota2 price=0.00
app.post('/games', async (req, res) => {
    try {
        const lastGame = await Game.findOne().sort({ id: -1 });
        const newId = lastGame ? lastGame.id + 1 : 1;

        const game = new Game({
            id: newId,
            name: req.body.name,
            price: req.body.price
        });

        const newGame = await game.save();
        res.status(201).json(newGame);
    } catch (error) {
        res.status(400).json({ message: error.message });
    }
});


//Päring uuendab id järgi
app.put('/games/:id', async (req, res) => {
    try {
        const game = await Game.findOne({ id: req.params.id });
        if (!game) return res.status(404).json({ message: 'Game not found' });

        game.name = req.body.name || game.name;
        game.price = req.body.price || game.price;

        const updatedGame = await game.save();
        res.json(updatedGame);
    } catch (error) {
        res.status(400).json({ message: error.message });
    }
});


//päring mis kustutab id järgi
app.delete('/games/:id', async (req, res) => {
    try {
        const game = await Game.findOne({ id: req.params.id });
        if (!game) return res.status(404).json({ message: 'Game not found' });

        await game.deleteOne();
        res.json({ message: 'Game deleted' });
    } catch (error) {
        res.status(500).json({ message: error.message });
    }
});

Pärast seda kõikke meie struktuur võib näha selliseks