Développer et connecter une application Node.js à Public Cloud Databases for MongoDB
Découvrez comment créer une application NodeJS connectée à un service MongoDB managé OVHcloud
Objectif
Dans ce tutoriel, nous allons utiliser la plateforme Node.js pour créer une application de chat en temps réel qui envoie et affiche des messages à un destinataire instantanément, sans rechargement de page. Nous utiliserons le framework JavaScript Express.js ainsi que les bibliothèques Mongoose et Socket.io pour y parvenir.
OVHcloud fournit des services dont vous êtes responsable de la configuration et de la gestion. Vous êtes donc responsable de leur bon fonctionnement.
Ce tutoriel est conçu pour vous aider autant que possible dans les tâches courantes. Si vous rencontrez des difficultés pour réaliser ces actions, veuillez contacter un prestataire de services spécialisé et/ou en discuter avec notre communauté d'utilisateurs. OVHcloud ne peut pas vous fournir d'assistance technique à ce sujet.
Prérequis
- Un projet Public Cloud dans votre compte OVHcloud
- Un accès à l'
- Une base de données MongoDB fonctionnant sur votre service Public Cloud Databases OVHcloud (ce guide peut vous aider à répondre à ce prérequis)
- Configurer votre instance MongoDB pour accepter les connexions entrantes
- Un environnement de travail NodeJS et une connectivité réseau publique (Internet). Ce tutoriel a été réalisé avec NodeJS LTS 16.14.0.
En pratique
Créer une application de chat simple
Notre application doit permettre à plusieurs utilisateurs de discuter ensemble. Les messages doivent se mettre à jour sans rechargement de la page. Pour plus de simplicité, nous éviterons l'authentification.
Nous pouvons commencer par créer un nouveau répertoire de projet et nous y déplacer. Nous pouvons ensuite initialiser notre projet avec la commande suivante :
Cela nous invitera à saisir des informations sur notre projet.
Après cela, un fichier package.json sera créé :
Notre répertoire d'application est maintenant prêt.
La première chose à faire est de créer un serveur. Pour cela, nous allons utiliser un framework appelé Express.
Express.js
Express.js, ou simplement Express, est un framework d'application web pour Node.js. Express fournit un ensemble robuste de fonctionnalités pour les applications web et mobiles ainsi qu'une fine couche de fonctionnalités fondamentales, sans masquer les fonctionnalités de Node.js.
Installez Express.js à l'aide de la commande suivante :
Dans le fichier package.json, une nouvelle ligne sera ajoutée :
Ensuite, nous allons créer un fichier server.js.
Dans ce fichier, nous devons importer Express et créer une référence à une variable à partir d'une instance d'Express. Des contenus statiques comme du HTML, du CSS ou du JavaScript peuvent être servis avec Express.js :
Et nous pouvons commencer à écouter un port avec le code :
Nous devons maintenant créer un fichier HTML, index.html, qui affichera notre interface.
Notez que la balise vide <script></script> sera l'endroit où nous écrirons le code JavaScript côté client.
Pour indiquer cela à Express, nous allons utiliser un fichier statique. Nous ajoutons une nouvelle ligne dans server.js :
Nous pouvons exécuter server.js avec la commande :
Ou avec un paquet appelé nodemon, afin que les modifications apportées au code soient automatiquement détectées. Téléchargez nodemon avec la commande :
Le -g signifie global, afin qu'il soit accessible dans tous les projets.
Exécutez le code avec la commande :
Si vous accédez à localhost:3000, nous pouvons voir le fichier index :

Maintenant que notre serveur est opérationnel, nous devons créer notre base de données. Pour cette application, nous utiliserons une base de données No-SQL avec MongoDB. Notre base de données contiendra une seule collection appelée messages, avec les champs name et message.
Pour connecter cette base de données à l'application, nous utiliserons un autre paquet appelé Mongoose.
Mongoose
Mongoose est un outil de modélisation d'objets MongoDB conçu pour fonctionner dans un environnement asynchrone.
Mongoose peut être installé avec la commande :
Dans server.js, nous allons importer Mongoose :
Nous allons assigner une variable, l'URI de service de notre instance de base de données MongoDB.
Mongoose se connectera à la base de données MongoDB avec la méthode connect :
Et nous allons définir notre modèle de message ainsi :
Nous pouvons maintenant implémenter la logique du chat, mais avant cela, il reste un paquet à ajouter.
Body-Parser
Body-Parser extrait l'intégralité du corps d'une requête entrante et l'expose sur req.body. Ce middleware faisait auparavant partie d'Express.js, mais doit maintenant être installé séparément.
Installez-le avec la commande suivante :
Ajoutez le code suivant à server.js :
Routage
Le routage désigne la manière dont les points de terminaison (URI) d'une application répondent aux requêtes des clients. Vous définissez le routage à l'aide des méthodes de l'objet app d'Express, qui correspondent aux méthodes HTTP : app.get() pour traiter les requêtes GET et app.post() pour traiter les requêtes POST.
Ces méthodes de routage spécifient une fonction de rappel (parfois appelée « fonction de traitement ») appelée lorsque l'application reçoit une requête vers la route (point de terminaison) et la méthode HTTP spécifiées. En d'autres termes, l'application « écoute » les requêtes correspondant aux routes et méthodes spécifiées et, lorsqu'elle détecte une correspondance, elle appelle la fonction de rappel spécifiée.
Nous devons maintenant créer deux routes pour les messages afin que notre chat fonctionne.
Dans server.js :
- Get récupérera tous les messages de la base de données :
- Post enverra les nouveaux messages créés par l'utilisateur à la base de données :
Pour connecter ces routes au front-end, nous devons ajouter le code suivant dans la balise script côté client, dans index.html :
Ici, sendMessage est utilisé pour appeler la route post des messages et enregistrer un message envoyé par l'utilisateur. Le message est créé lorsqu'un utilisateur clique sur le bouton d'envoi.
De même, getMessage est utilisé pour appeler la route get des messages. Cela récupérera tous les messages enregistrés dans la base de données, qui seront ajoutés au div des messages.

Le seul problème restant est que le client n'a aucun moyen de savoir si le serveur a été mis à jour. Ainsi, à chaque envoi d'un message, nous devons actualiser la page pour voir les nouveaux messages.
Pour résoudre ce problème, nous pouvons ajouter un système de notifications push qui enverra des messages du serveur vers le client. En Node.js, nous utilisons socket.io.
Socket.io
Socket.io est une bibliothèque JavaScript pour les applications web en temps réel. Elle permet une communication bidirectionnelle en temps réel entre les clients web et le serveur, et comprend deux parties : une bibliothèque côté client qui s'exécute dans le navigateur et une bibliothèque côté serveur pour Node.js. Socket.io permet une communication événementielle bidirectionnelle en temps réel.
Pour installer socket.io :
Nous avons également besoin d'un paquet HTTP pour que Socket.io fonctionne :
Ajoutez le code suivant à server.js :
Et créez une connexion :
Dans index.html, ajoutez la balise suivante :
Nous devons maintenant créer une action emit lorsqu'un message est créé dans server.js. La route post devient donc :
Et dans la balise script côté client, dans index.html, ajoutez le code suivant :
Ainsi, à chaque envoi d'un message, le serveur mettra à jour les messages dans le div des messages.

Bravo ! Vous disposez désormais d'une application de chat nodeJS fonctionnelle, avec des messages stockés sur un cluster MongoDB. Consultez les tutoriels officiels NodeJS pour découvrir d'autres cas d'usage.
Pièces jointes
package.json
index.html
server.js
spec/server.spec.js
spec/support/jasmine.json
Nous voulons vos retours !
Nous serions ravis de répondre à vos questions et apprécions tout retour que vous pourriez nous faire.
Si vous avez besoin d'une formation ou d'une assistance technique pour la mise en oeuvre de nos solutions, contactez votre commercial ou cliquez sur ce lien pour obtenir un devis et demander une analyse personnalisée de votre projet à nos experts de l’équipe Professional Services.
Vous êtes sur Discord ? Rejoignez notre chaîne via https://discord.gg/ovhcloud et interagissez directement avec l’équipe qui développe notre service de bases de données !