const http = require('http');
const adresse = '127.0.0.1';
const port = 3000;
const serveur = http.createServer((requete, reponse) => {
reponse.statusCode = 200;
reponse.setHeader('Content-Type', 'text/plain');
reponse.end('Hello World\n');
});
serveur.listen(port, adresse, () => {
console.log(`Serveur à http://${adresse}:${port}/`);
});
Objectifs des semaines 8 à 10
À la fin de ces deux semaines, vous saurez reconnaître les quatre familles de bases de données NoSQL (clé-valeur, document, graphe, colonne) et choisir quand elles valent mieux que le relationnel, parler le vocabulaire de MongoDB (collection, document), installer Node.js et écrire un premier script puis un serveur HTTP, brancher Node sur PostgreSQL puis sur MongoDB, programmer un DAO Mongo qui liste, cherche et ajoute des documents, calculer des statistiques avec le pipeline d'agrégation, et garder des données locales avec LocalStorage.
Déroulement
- Les familles NoSQL : clé-valeur, document, graphe, colonne et multi-modèle. Ce qu'on gagne (souplesse, échelle) et ce qu'on lâche (les jointures, une partie d'ACID).
- La nomenclature : la table devient une collection, la rangée devient un document, et un document ressemble à un objet JavaScript en JSON.
- Node.js : installation,
node allo.js, puis un serveur HTTP qui répond surlocalhost:3000. - Node et la base : d'abord PostgreSQL avec le module
pg, ensuite MongoDB avec le pilote officiel :find,insertOne, puis l'agrégation avec$group. - Données locales : LocalStorage pour garder des préférences ou un cache côté client, le premier pas vers le Projet Bestiaire.
La nomenclature et trois extraits à garder sous la main
On ne nomme pas les choses de la même manière selon la technologie :
| Technologie | Groupe de données | Une seule donnée |
|---|---|---|
| SQL | TABLE | ENREGISTREMENT (rangée) |
| NoSQL | COLLECTION | DOCUMENT |
| Java / JavaScript | LISTE d'objets | OBJET |
const { MongoClient } = require('mongodb');
const uri = "mongodb://localhost:27017/";
async function listerOiseaux() {
const client = new MongoClient(uri);
await client.connect();
const oiseaux = await client.db("local")
.collection("oiseau").find({}).toArray();
console.log(oiseaux);
client.close();
}
listerOiseaux();
db.telephone.aggregate([
{ $group: {
_id: "$marque",
nombre: { $sum: 1 },
prixMoyen: { $avg: "$montant" }
} }
]);
// les valeurs numériques s'insèrent sans guillemets,
// sinon $sum et $avg ne les additionnent pas
npm install mongodb dans le répertoire du projet, et un serveur MongoDB qui écoute sur le port 27017 (local) ou une grappe MongoDB Atlas dont vous collez l'adresse mongodb+srv://.Notes de cours
Les diaporamas des semaines 8 à 10, en version web (diapositives d'origine, exactes) et en PDF :
Comprendre le NoSQL
Tester son installation Node.js : deux jeux à télécharger et compiler
Sur Kubuntu 24.04, installez d'abord Node.js 22 LTS directement par apt (dépôt officiel NodeSource) :
sudo apt update && sudo apt install -y curl
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
node -v
Puis téléchargez l'un de ces deux jeux (livrés sans node_modules/) pour tester l'installation des dépendances et la compilation :
unzip pirate-sql.zip && cd pirate-sql
npm install # télécharge et installe node_modules/
npm run dev # lance le jeu en développement ( ou ./start.sh )
npm run build # compile le projet dans dist/
npm run preview # teste la version compilée
Node.js
Programmer MongoDB
Programmation des données en Node
Le code du cours
Les scripts montrés en classe, à lancer avec node nom-du-fichier.js dans un projet où le pilote est installé.
Premiers pas
Scripts Node allo.js allo-toi.js allo-data.js (lire une collection) Jeux pour tester Node.js pirate-sql.zip sql-city-builder.zipLe DAO Mongo, en trois temps
MongoDAO sans classe en classe le testL'exercice Oiseaux : un exemple complet
Projet Oiseaux oiseau-du-monde.zip oiseau-du-monde-en-cours.zip oiseau-du-monde-solution.zipnpm run start sur le projet Oiseaux donne l'erreur fatal: the suid sandbox helper binary was found, but is not configured correctly (causée par la restriction d'Ubuntu 24.04 sur les espaces de noms utilisateurs non privilégiés de chrome-sandbox), désactivez temporairement cette restriction pour démarrer immédiatement :
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
Ressources
Carte de référence MongoDB (PDF) Documentation MongoDB le manuel le pilote Node.js l'agrégation Node.js télécharger la documentation MongoDB Atlas (grappe gratuite en ligne) LocalStorage sur MDN (en français)Évaluation : le Projet Bestiaire (25 %)
Le devoir des semaines 8 à 12 : une application Node et MongoDB qui gère un bestiaire, avec ses tutoriels (commandes importantes, l'application, les données locales). L'exercice Oiseaux ci-dessus en est la répétition générale. Tout le projet est sur sa propre page : le Projet Bestiaire.
En savoir plus
Pour aller plus loin et comparer avec l'écosystème Java : les diapositives et le projet Eclipse avec le pilote officiel MongoDB pour Java.