Skip to content

Backend Topic: Use Mongoose to object model your database

SBindels edited this page Apr 9, 2022 · 8 revisions

Backend topic: Use Mongoose to object model your database

Wat is Mongoose?

Mongoose is een Object Data Mondeling (ODM) library voor MongoDB en Node.js. Het zorgt voor relaties tussen data, schema validatie en wordt gebruikt bij het vertalen tussen objecten in code en de representatie voor deze objecten in MongoDB. MongoDB is een schema loos NOSQL document database. Dit betekend dat je in deze database JSON documenten kan opslaan. De structuur van deze documenten kan veranderen en staat dus niet vast zoals in SQL databases.

NoSQL: Dit zijn databases die over het algemeen gebruik maken met grote hoeveelheden gedistribueerde data. Deze systemen maken dus niet gebruik van de taal SQL, deze syntax is meer bedoeld om data op te slaan en op te halen. Daarnaast zijn NoSQL databases simpel op te schalen en zijn er geen super krachtige computers voor nodig.

NoSQL gebruikt ook het acroniem BASE, dit staat voor Basic, Availability, Soft-state en Eventual consistency. Dit betekent eigenlijk dat de database altijd werkt en dat de opgeslagen data niet altijd consistent hoeft te zijn. Data bij een BASE-transactie is met name geschikt voor schaalbaarheid omdat het de nadruk legt op beschikbaarheid.

Omdat wij in onze dating-app veel gebruiker hebben en onze data ook opslaan in JSON formaat is een NoSQL database een must.

Hoe kunnen we mongoose gebruiken?

Definiëren van een Schema:

Een schema definieert een properties van een document door een object. Waar je wel op moet letten is dat de naam van je schema hetzelfde moet zijn als de naam is je collection. Dus in onze root map is een nieuwe map genaamd “models” met daarin onze schema’s.

User: Het userSchema heeft een aantal properties zoals: e mail, gebruikersnaam en wachtwoord met een type als string. Gebruikersnaam heeft een type unique: true. Dit wil zeggen dat niemand dezelfde gebruikersnaam mag hebben.

const userSchema = new Schema({
    email: {
        type: String,
        required: true,
    },
    gebruikersnaam: {
        type: String,
        required: true,
        unique: true
    },
    wachtwoord: {
        type: String,
        required: true
    }
},
{
    timestamps: true
})

Modellen exporteren door je met: module.exports = User

Reference:

In onze dating-app gebruiken we verschillende schema’s, binnen mongoose bestaat er een reference. Wij hebben een userSchema en een keuzeschema, door middel van ref zijn deze gelinkt. Nu hebben een gebruiker die geassocieerd met een keuze.

Hieronder is een property “User” aangemaakt in het keuzeschema met ObjectId. De ObjectId is een data type van Mongoose dat verwijst naar een andere collection in MongoDB database ObjectId komt samen met ref. Ref vertel in welke collection de geïmporteerde is.

user: {
        type: mongoose.Schema.Types.ObjectId,
        required: true,
        ref: User,
    }

bronnenlijst

Bronnen: Cofre, L. (2020, 14 september). Mongoose with Node.js - Object Data Modeling. Stack Abuse. Geraadpleegd op 2 april 2022, van https://stackabuse.com/mongoose-with-nodejs-object-data-modeling/#whatismongoose

freeCodeCamp.org. (2019, 7 juni). Introduction to Mongoose for MongoDB. Geraadpleegd op 2 april 2022, van https://www.freecodecamp.org/news/introduction-to-mongoose-for-mongodb-d2a7aa593c57/#:%7E:text=Mongoose%20is%20an%20Object%20Data,of%20those%20objects%20in%20MongoDB.&text=MongoDB%20is%20a%20schema%2Dless%20NoSQL%20document%20database.

Ligan, T. (2022, 30 maart). SQL vs. NoSQL: wat zijn de verschillen? True. Geraadpleegd op 2 april 2022, van https://www.true.nl/blog/sql-vs-nosql/

Mongoose Timestamps. (2020, 17 juli). Mastering JS. Geraadpleegd op 3 april 2022, van https://masteringjs.io/tutorials/mongoose/timestamps

Singh, A. (2021, 19 april). Mongoose “Populate()” in most simple way | How to import a collection into another schema in Mongodb. DEV Community. Geraadpleegd op 3 april 2022, van https://dev.to/singhanuj620/mongoose-populate-in-most-simple-way-how-to-import-a-collection-into-another-schema-in-mongodb-4nnf

Mongoose v6.2.9: Schemas. (z.d.). Mongoose Ejs. Geraadpleegd op 3 april 2022, van https://mongoosejs.com/docs/guide.html