Une collection MongoDB est l’équivalent d’une table dans les bases de données relationnelles.
- Dans MongoDB, une collection regroupe plusieurs documents (les entrées de données), qui sont des objets JSON dynamiques.
- Chaque document est une unité d’information stockée dans la collection, organisée en champs/valeurs, mais sans schéma fixe imposé (structure flexible).
- Dans une application Express, on utilise souvent Mongoose pour définir un modèle (schema) qui correspond à une collection dans MongoDB.
- Par exemple, une collection
users
contiendra tous les documents représentant les utilisateurs. - Les opérations (CRUD) dans Express ciblent ces collections via des modèles Mongoose pour manipuler les documents (ajouter, lire, modifier, supprimer).
En résumé, dans Express, une collection MongoDB est une structure de données qui stocke un ensemble de documents liés, modélisés via Mongoose, et manipulables via les routes et contrôleurs de l’application.
Création d’un modèle de données
Dans un fichier backend/models/ingredient.js
const mongoose = require('mongoose');
const uniqueValidator = require('mongoose-unique-validator');
const ingredientSchema = mongoose.Schema({
name: {type: String, require: true, unique: true},
picto: {type: String, require: true}
})
userSchema.plugin(uniqueValidator);
module.exports = mongoose.model('Ingredient', ingredientSchema);
Créer un contrôleur pour manipuler les données
Dans un fichier backend/controllers/ingredient.js
const Ingredient = require('../models/ingredient');
exports.getAll = (req, res) => {
Ingredient.find()
.then(ingredients => res.status(200).json({ingredients}))
.catch(error => res.status(400).json({error}));
}
Créer une route pour récupérer les données
Dans un fichier backend/routes/ingredient.js
const express = require('express');
const router = express.Router();
const ingredientController = require('../controllers/ingredient');
router.get('/all', ingredientController.getAll);
module.exports = router;