Apprendre le Node.js facilement et simplement.
Dans cette leçon, vous allez apprendre à connecter une application Node.js/Express.js à MongoDB en utilisant MongoDB Atlas. Vous verrez également comment effectuer des opérations sur une base de données.
Créer un compte MongoDB Atlas
Rendez-vous sur MongoDB Atlas et créez un compte si ce n’est pas encore fait.
0.0.0.0/0
.mongodb+srv://<username>:<password>@cluster0.mongodb.net/<dbname>?retryWrites=true&w=majority
mkdir mongoose-express
cd mongoose-express
npm init -y
npm install express mongoose
express
: Framework pour créer un serveur.mongoose
: Bibliothèque pour interagir avec MongoDB.index.js
.const express = require('express');
const mongoose = require('mongoose');
const app = express();
app.use(express.json());
// URI de connexion MongoDB (remplacez <username>, <password> et <dbname>)
const mongoURI = 'mongodb+srv://<username>:<password>@cluster0.mongodb.net/<dbname>?retryWrites=true&w=majority';
// Connexion à MongoDB
mongoose.connect(mongoURI, { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => console.log('Connecté à MongoDB Atlas'))
.catch(err => console.error('Erreur de connexion à MongoDB', err));
// Définir un modèle Mongoose
const utilisateurSchema = new mongoose.Schema({
// premier element (nom) = la clé; on définit le type avec type: leType, et si il est obligatoire avec required: true ou false.
nom: { type: String, required: true },
email: { type: String, required: true },
age: { type: Number }
});
// Initialiser la collection nommé "Utilisateur"
const Utilisateur = mongoose.model('Utilisateur', utilisateurSchema);
// 1. Lire tous les utilisateurs
app.get('/api/utilisateurs', async (req, res) => {
const utilisateurs = await Utilisateur.find();
res.json(utilisateurs);
});
// 2. Lire un utilisateur par ID
app.get('/api/utilisateurs/:id', async (req, res) => {
try {
const utilisateur = await Utilisateur.findById(req.params.id);
if (!utilisateur) return res.status(404).json({ message: 'Utilisateur non trouvé' });
res.json(utilisateur);
} catch (err) {
res.status(500).json({ message: 'Erreur serveur' });
}
});
// 3. Ajouter un utilisateur
app.post('/api/utilisateurs', async (req, res) => {
try {
const nouvelUtilisateur = new Utilisateur(req.body);
const utilisateur = await nouvelUtilisateur.save();
res.status(201).json(utilisateur);
} catch (err) {
res.status(400).json({ message: 'Erreur lors de l\'ajout', details: err });
}
});
// 4. Mettre à jour un utilisateur
app.put('/api/utilisateurs/:id', async (req, res) => {
try {
const utilisateur = await Utilisateur.findByIdAndUpdate(
req.params.id,
req.body,
{ new: true, runValidators: true }
);
if (!utilisateur) return res.status(404).json({ message: 'Utilisateur non trouvé' });
res.json(utilisateur);
} catch (err) {
res.status(400).json({ message: 'Erreur lors de la mise à jour', details: err });
}
});
// 5. Supprimer un utilisateur
app.delete('/api/utilisateurs/:id', async (req, res) => {
try {
const utilisateur = await Utilisateur.findByIdAndDelete(req.params.id);
if (!utilisateur) return res.status(404).json({ message: 'Utilisateur non trouvé' });
res.status(204).send(); // Pas de contenu
} catch (err) {
res.status(500).json({ message: 'Erreur serveur' });
}
});
// Démarrer le serveur
const PORT = 5000;
app.listen(PORT, () => {
console.log(`Serveur démarré sur http://localhost:${PORT}`);
});
node index.js
/api/utilisateurs
: Récupérer tous les utilisateurs./api/utilisateurs
: Ajouter un utilisateur.
{
"nom": "Charlie",
"email": "charlie@example.com",
"age": 30
}
/api/utilisateurs/:id
: Récupérer un utilisateur par ID./api/utilisateurs/:id
: Mettre à jour un utilisateur.
{
"nom": "Charlie Updated",
"age": 31
}
/api/utilisateurs/:id
: Supprimer un utilisateur.Vous aurez une API fonctionnelle avec MongoDB. Voici un exemple de réponse pour GET /api/utilisateurs
:
[
{
"_id": "63d4f93b2f4e5b0012345678",
"nom": "Alice",
"email": "alice@example.com",
"age": 25
},
{
"_id": "63d4f93b2f4e5b0012345679",
"nom": "Bob",
"email": "bob@example.com",
"age": 28
}
]
Vous avez appris à configurer MongoDB Atlas, à connecter une application Express.js à MongoDB, et à créer une API REST complète. 🎉