Dieterg
Legacy Member
In mijn vrije tijd ben ik wat aan het spelen met Mongoose.
Ik ben een REST API aan het maken in NodeJS en heb wat vragen over het model dat ik nu heb.
Het model ziet er als volgt uit:
Ik heb weinig tot geen ervaring met Mongoose, is bovenstaand model correct gedefinieerd?
In mijn REST API heb ik vervolgens volgend endpoint gedefinieerd:
In mijn controller heb ik dan een functie om alle categorieën op te halen.
Het idee is dat je enkel de categorieën terug krijgt en niet de categorieën + betalingen.
Bovenstaande functie haalt alle categorieën op en betalingen + eventuele gesharede betalingen.
Ik vind dit raar, waarom bestaat er dan zoiets als populate?
Ik zou denken dat als je de betalingen er bij wilt hebben dat je iets als volgt moet doen
Dit geeft hetzelfde resultaat terug.. In beide gevallen krijg ik de betalingen er bij.
Ik heb dit als volgt opgelost:
Is dit correct? Ik vraag mij af wat er achter de scherm gebeurd, worden de betalingen genegeerd in bovenstaande query?
Alvast bedankt om mij hier wat meer uitleg over te geven.
Ik ben een REST API aan het maken in NodeJS en heb wat vragen over het model dat ik nu heb.
Het model ziet er als volgt uit:
Code:
var mongoose = require('mongoose'),
SharedPayment = new mongoose.Schema({
description: String,
issuedBy: String,
amount: Number,
category: String,
amountSharedWith: Number
}),
Payment = new mongoose.Schema({
description: String,
place: String,
issuedBy: String,
paymentType: String,
amount: Number,
sharedPayments: [SharedPayment]
});
module.exports = mongoose.model('Category', {
qualifier: Number,
name: String,
amount: Number,
payments: [Payment]
});
Ik heb weinig tot geen ervaring met Mongoose, is bovenstaand model correct gedefinieerd?
In mijn REST API heb ik vervolgens volgend endpoint gedefinieerd:
Code:
app.get('/api/categories', categoryController.all);
In mijn controller heb ik dan een functie om alle categorieën op te halen.
Het idee is dat je enkel de categorieën terug krijgt en niet de categorieën + betalingen.
Code:
Category.find({}, function(err, categories) {
res.json(categories);
});
Bovenstaande functie haalt alle categorieën op en betalingen + eventuele gesharede betalingen.
Ik vind dit raar, waarom bestaat er dan zoiets als populate?
Ik zou denken dat als je de betalingen er bij wilt hebben dat je iets als volgt moet doen
Code:
Category.find().populate('payments').exec(function(err, categories){
res.json(categories);
});
Dit geeft hetzelfde resultaat terug.. In beide gevallen krijg ik de betalingen er bij.
Ik heb dit als volgt opgelost:
Code:
Category.find().select('name qualifier').exec(function(err, categories){
res.json(categories);
});
Alvast bedankt om mij hier wat meer uitleg over te geven.

