Node.js - 6.2 Partager des données entre les requêtes
Pour conserver des données entre deux requêtes, une solution simple consiste à les stocker dans une variable JavaScript. Cette leçon montre comment ranger les produits dans un tableau, le partager entre deux fichiers, et pourquoi cette méthode a des limites.
Stocker les produits dans un tableau
Le fichier des routes d'administration déclare un tableau products, vide au départ. La route qui reçoit le titre ajoute un nouvel objet dans ce tableau, avec la propriété title prise dans req.body.
const products = [];
router.post('/product', (req, res, next) => {
products.push({ title: req.body.title });
res.redirect('/');
});
Exporter et importer le tableau
Le fichier exporte à la fois le routeur et le tableau products. Dans le fichier de la boutique, on importe ce module, puis on accède au tableau avec la notation par point.
Un tableau est un type de référence : quand il est modifié, tous les fichiers qui le lisent voient la mise à jour.
module.exports = { routes: router, products: products };
// dans shop.js
const adminData = require('./admin');
console.log(adminData.products);
Une limite à connaître
Ce stockage vit dans la mémoire du serveur. Les données sont partagées par tous les utilisateurs, et elles disparaissent au redémarrage du serveur. C'est pour cette raison qu'une base de données sera utilisée plus tard dans le cours.
En résumé
Un tableau JavaScript peut conserver les produits pendant l'exécution du serveur. module.exports permet de le partager avec un autre fichier. Cette méthode a une limite : les données sont perdues au redémarrage et partagées par tous.
Points clés
- Un tableau JavaScript peut stocker les produits pendant l'exécution du serveur.
- push() ajoute un élément au tableau à chaque envoi du formulaire.
- module.exports permet de partager le tableau avec un autre fichier.
- Un tableau est un type de référence : la modification se voit partout où il est lu.
- Les données en mémoire disparaissent au redémarrage du serveur.
Questions fréquentes
Les produits restent-ils après un rechargement de la page ?
Oui, tant que le serveur ne redémarre pas. Le tableau reste en mémoire pendant toute l'exécution.
Un tableau déclaré avec const peut-il changer ?
Oui. const empêche de réaffecter la variable, mais il permet d'ajouter des éléments au tableau.
Ce partage convient-il à une vraie application ?
Non, pas sur la durée. Les données sont perdues au redémarrage et partagées par tous. Une base de données permet un stockage permanent.