MongoDB - gebruik in Express

Gebruik van MongoDB in Express

Hieronder vind je code die laat zien hoe je MongoDB kunt gebruiken in Express.
De eerste manier die je hieronder vindt maakt eenmalig verbinding met de database en houdt de verbinding open.
De tweede manier maakt voor elke actie opnieuw verbinding.

Gebruik van MongoDB in Express - manier 1

Maak een nieuw bestand aan en noem deze db.js. Zet daarin de volgende code:

                
import { MongoClient } from 'mongodb';

//lees de connection string uit de environment file
const connectionString = process.env.CONNECTION_URL;
//maak een nieuwe MongoClient aan met de connection string
const client = new MongoClient(connectionString);
let connection;
try {
    //zet de verbinding op
    connection = await client.connect();
} catch (e) {
    //gaat het mis toon de error op het console
    console.error(e);
}
//zet de verbinding op met de database (vul nog wel even je database naam in)
let db = connection.db('');
//exporteer het variabele db voor verder gebruik
export default db;
                
            
In de index.js vinden we de volgende code:
                
//config wordt direct aangeroepen op de dotenv import
import {} from 'dotenv/config';
import express from 'express';
//db.js wordt geimporteerd zodat we direct gebruik kunnen maken van de verbinding met de database
import db from './db.js';

const app = express();
const port = 3000;

app.get('/', async (req, res) => {
    //we halen de collection op (vul nog wel de collection naam in)
    const collection = await db.collection('');
    //we halen alle documenten uit de collection op
    const results = await collection.find({})
        .toArray();
    //we geven de documenten terug uit de route
    res.send(results).status(200);
});

app.listen(port, () => {
    console.log(`Example app listening on port ${port}`);
});
                
            

Gebruik van MongoDB in Express - manier 2

In de index.js vinden we de volgende code:

                
import express from 'express';
//config wordt direct aangeroepen op de dotenv import
import {} from 'dotenv/config';
import { MongoClient } from 'mongodb';

const app = express();
const port = 3000;
//lees de connection string uit de environment file
const databaseUrl = process.env.CONNECTION_URL;
const client = new MongoClient(databaseUrl);

//op de / route geven we de documenten terug uit de MongoDB database
app.get('/', (req, res) => {
    //fetchDocuments() is een async functie dus zullen we met then() moeten werken
    fetchDocuments().then(documents => {
        //in de then() geven we de documenten terug naar de browser in de vorm van json
        res.json(documents);
    });
});

app.listen(port, () => {
    console.log(`Example app listening on port ${port}`);
});

//Deze functie geeft alle documenten terug uit een collectie in MongoDB
async function fetchDocuments() {
    try {
        // we verbinden de client met de server
        await client.connect();
        //hier verbinden we met de database, je moet nog wel een naam invullen
        const database = client.db('');
        //hier verbinden we met de collectie, je moet nog wel een naam invullen
        const collection = database.collection('');
        //hier halen we de documenten uit de collectie in de vorm van een array
        const documents = await collection.find().toArray();
        //uiteindelijk geven we de documenten terug
        return documents;
    } finally {
        //we zorgen ervoor dat aan het einde de database verbinding weer wordt gesloten
        await client.close();
    }
}