Andmebaasi sidumine

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

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

Võtame sidumise stringi Clusters -> Connect

Lisame selle stringi .env faili sisse

Pärast seda kõikke me laeme alla mongoose ja dotenv

JavaScript
npm i mongoose
npm i dotenv

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

NB! LISAGE .gitignore selleks, et teie .env faili keegi ei kasutaks

Loome models/game.js, sinna sisse me kirjutame

JavaScript
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

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

Pärast seda lisame veel

JavaScript
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

JavaScript
//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

Kokkuvõtte:

Me uuendasime meie vanasi APIˇsi, andsime nendele, et nad salvestasiks meie andmeid mitte ainult locaalis, nüüd meie andmed on salvestatud nüüd mongodbˇes

Kui te tahate vaadata minu projekti siis võite vaadata minu GitHub: link