Dans ce tutoriel, je vous explique comment créer un compte chez MongoDB, comment créer une base de données, ainsi que comment se connecter à une API REST. Ici avec Node.js et Express. Alors c’est parti..
Création d'un compte chez MongoDB
Accédez au site Web de MongoDB et inscrivez vous pour obtenir un compte gratuit. Une fois que vous avez accès à votre tableau de bord, créez un cluster puis configurez le avec l’option AWS et uniquement les options gratuites afin de pouvoir développer gratuitement.
Bien choisir MongoDB Atlas pour bénéficier d’un cluster gratuit.
Il faut donc commencer par créer un compte pour pouvoir bénéficier de ce cluster gratuit.
Je ne m’étends pas sur ce point. Je pense que tout le monde sait ouvrir un compte.
Vous recevrez alors un email de MongoDB vous demandant de confirmer votre adresse email avec laquelle vous avez souscrit le compte :
Après avoir cliquer sur le bouton dans l’email reçu, nous arrivons sur cette page dans notre navigateur :
On appuie sur « Continue », et nous arrivons sur la page de connexion :
On se connecte donc, et nous arrivons sur une page où MongoDB veut savoir ce que vous venez faire chez eux !! Remplissez donc ces champs selon vos préférences et cliquez ensuite sur Finish :
Création d’un Cluster
Ensuite, il faut choisir si nous souhaitons un abonnement payant ou gratuit.
Nous allons donc prendre la version gratuite et bien entendu limitée également, en sélectionnant la version « FREE » et en cliquant sur Create .
Nous arrivons ensuite sur la page pour choisir un serveur de connexion. Là encore vous pouvez choisir, selon vos préférences :
En 1 : La version FREE Shared : pour garder la version gratuite.
En 2 : Le choix d’un serveur et de sa localisation.
En 3 : On créer notre Cluster
Pendant le démarrage de votre cluster, vous pouvez accéder à l’onglet Database Access (1). Et cliquez sur « Add new Database User » (2).
Création d’un utilisateur de base de données
Nous arrivons sur la fenêtre de création de l’utilisateur :
D’abord, choisissez le nom d’utilisateur (1) ainsi que le mot de passe (2) de votre choix et notez-les, car vous en aurez besoin pour connecter votre API à votre cluster.
Vous devrez ajouter un utilisateur disposant de la capacité de lecture et d’écriture dans n’importe quelle base de données. (3)
Cliquez ensuite sur le bouton « Add User » (4)
Votre profil utilisateur vient d’être créé :
Il faut ensuite enregistrer votre adresse IP.
Pour cela, allez sur l’onglet Network Access (1) puis cliquez sur « Add IP Address » (2) :
Une nouvelle fenêtre s’ouvre.
La, si vous souhaitez pouvoir vous connectez à votre base de données de n’importe quel service, et de n’importe où, vous devez cliquer sur « Allow Access from Anywhere » (1) :
Votre Access List Entry se remplira automatiquement avec : 0.0.0.0/0
Cliquez ensuite sur le bouton « Confirm » (2).
Email reçu de MongoDB
Vous recevrez un email de la part de MongoDB, qui vous avertit que vous avez donné la possibilité de se connecter de n’importe où.
Le message est en anglais « of course », and my uncle is rich…. 😊
Pour la faire courte voici en substance ce que ce message dit :
Il s’agit d’un avis d’information pour vous assurer que vous avez ajouté “Autoriser l’accès de n’importe où (0.0.0.0/0)” à votre liste de permissions réseau.
Bien que les clusters Atlas de MongoDB soient protégés par l’authentification, il est important de s’assurer que des identifiants solides (nom d’utilisateur et mot de passe) sont utilisés pour tous les utilisateurs de la base de données, en particulier lorsqu’ils permettent l’accès de n’importe où.
Notre cluster est donc maintenant créé et connecté.
Nous pouvons donc maintenant créé une base de données avant de pouvoir nous connecter à notre API.
Création d'une base de données
Pour créer une base de données, on va aller sur l’onglet « Databases » (1), et ensuite sur cette page cliquez sur l’onglet « Browse Collections » (2) :
Sur cette page « Collections », nous avons donc 2 possibilités de proposées :
Soit créer une base qui nous chargera un échantillon de données. (Load a Sample Dataset).
Ou créer notre base avec nos propres données : c’est le choix que nous ferons ici :
On clique donc sur “Add My Own Data”
Nommer la base de données MongoDB
Nous arrivons sur une nouvelle fenêtre qui nous demande de renseigner :
- Le nom que l’on souhaite donner à notre base de données.
- Le nom que l’on souhaite donner à une collection (équivalent à un ensemble de table de base de données, pour ceux qui connaissent).
- Nous validons ensuite la création de notre base.
Ici, nous allons créer une base de données nommée « MaBaseDeDonnees » avec une collection nommée « MesDonnees ».
Oui je sais, je suis très inspiré !!! 😊
A noter que certains caractères sont interdits pour le nom des bases de données et des collections :
/\. “$*<>:|?
Mais restons simple pour la première, nous n’utiliserons donc pas ces symboles mais l’utilisation du nommage est importante. Il faudra reproduire ce nom tel qu’écrit, en respectant les majuscules et les minuscules utilisées. Surtout lors de la connexion avec l’API.
Voilà notre première base de données créée avec notre collection :
Nous allons donc pouvoir maintenant nous connecter avec notre API :
Une fenêtre s’ouvre et nous allons choisir « Connect your application » (1) :
Une nouvelle fenêtre apparait.
- Surtout bien choisir « Node.js » et dernière version (ici 4.0 or later).
- Copier le code de connexion située dans cette fenêtre.
- Fermer la fenêtre.
Nous allons donc nous rendre sur notre éditeur de code pour connecter notre base de données avec notre API.
Connexion depuis éditeur de code / VSCode
De retour donc dans VSCode :
Bien entendu, il faudra avoir installer Mongoose dans notre projet node.js.
Pour rappel, le package est installer avec la commande
npm install –save mongoose
depuis notre terminal. Après l’installation pensez bien à importer Mongoose dans votre fichier app.js :
const mongoose = require('mongoose') ;
Sur notre fichier app.js pour nous connecter à MongoDB, nous allons écrire ceci :
Ici, je laisse mon pseudo choisi lors de la création de l’utilisateur de base de données, à savoir fabsolo58, et mon mot de passe (que je ne donne pas), ainsi que le nom de ma base de données créée (MaBaseDeDonnes).
mongoose.connect('mongodb+srv://fabsolo58:Motdepasse@cluster0.ktvxb.mongodb.net/MaBaseDeDonnees?retryWrites=true&w=majority',
{useNewUrlParser: true,
useUnifiedTopology: true })
.then(() => console.log('Connexion à MongoDB réussie !'))
.catch(() => console.log('Connexion à MongoDB échouée !'));
Bien entendu, vous rentrerez votre nom d’utilisateur, votre mot de passe et le nom de votre base de données à vous !
Réponse dans la console de la connexion à MongoDB
Maintenant si nous avons renseigné les champs comme il faut et que l’on se connecte à notre serveur, nous devrions recevoir un message dans notre console comme demandé dans le .then(() => console.log(‘Connexion à MongoDB réussie !’))
Sinon nous recevrons le message d’erreur du .catch !!
Alors, ATTENTION, roulement de tambour …. 😊
Bon pour la petite histoire j’ai eu 2 erreurs, car pour la première je n’avais pas renseigné le bon mot de passe, et une autre ou je me suis rendu compte que lors de la création de ma base de données sur MongoDB, je l’avais nommée MaBaseDeDonnes ! J’avais donc oublié un « e » à données !! Comme quoi, le moindre point, la moindre erreur et ça ne passe pas…
Nous voici donc maintenant connecté avec notre API et nous allons pouvoir envoyer nos objets, ou nos modèles qui seront stockés dans notre base de données, et également recevoir nos données depuis MongoDB.
On regarde du coté de MongoDB ce que ça donne ? :
Notre base à ce stade va contenir les modèles que nous avons construits, à savoir le modèle « Things » et le modèle « Users »
Tout est bien là. Il ne nous reste plus qu’à continuer de travailler sur notre API.
Bon courage à tous et ENJOY le code !!!
Le travail est fait, mais comme je vous sens passionné, je vais vous donner un petit BONUS.
Vous êtes toujours là ? 😊
BONUS
Oui ? Alors on y va pour le bonus, qui pour le coup est en lien avec le sujet traité plus haut.
Comme vous le savez, nous allons devoir mettre nos fichiers d’API en ligne, et surement dans un premier temps sur GitHub. Or comme vous le savez également, nos repositories sont publics pour la plupart du temps. Ce qui veut dire que si quelqu’un va chercher dans votre repository, votre fichier app.js, eh bien il aura accès à votre nom d’utilisateur de base de données, votre mot de passe, et même le nom de votre base de données. En gros, il pourrait même aller y stocker ses données à lui !
Donc voilà que tout ce qu’on a appris, nous montre que tout cela n’est pas sécurisé pour un sou !
L’expression du Moyen Âge ! Bon ok, donc pas sécurisé pour un €uro ! 😊
Alors voici le BONUS et la solution :
Bonus : La Solution pour sécuriser nos fichiers
La solution s’appelle « dotenv ».
Dotenv va nous permettre de créer un fichier .env qui stockera nos données sensibles, celles que l’on ne veut pas montrer à tous.
Nous allons donc commencer par installer le package dotenv dans notre projet en tapant dans notre terminal :
npm i dotenv
Ensuite nous l’importons dans notre fichier app.js, avec la méthode :
require(‘dotenv’).config();
Nous allons ensuite créer dans notre dossier backend, ou à la racine du dossier principal (s’il ne s’appelle pas backend), un fichier nommé :
.env
Ce fichier .env va nous permettre de stocker nos paramètres de connexion à notre base de données, et d’autres chose encore.
Sachez que par convention, ces variables seront nommées en majuscules.
Dans mon fichier .env , je vais donc créer une variable MONGODB_PATH, qui va représenter le chemin pour accéder à ma base de données donc.
Et cette variable sera égale à toutes les données que nous avons pour nous connecter à la base de données. Cela donnera donc chez moi :
MONGODB_PATH = 'mongodb+srv://fabsolo58:motdepasse@cluster0.ld2zt.mongodb.net/MaBaseDeDonnees?retryWrites=true&w=majority'
Voilà ce que ça donne dans VSCode :
Nous retournons ensuite sur notre fichier app.js, et à la place de nos paramètres de connexion à la base de données, nous allons donc mettre maintenant :
process.env.MONGODB_PATH
Toutes les données(variables) stockées dans le .env, devront ensuite être précédées par process.env pour fonctionner.
Ainsi si je regarde maintenant mon fichier app.js, plus personne ne peut avoir accès à mon nom d’utilisateur, mon mot de passe, etc.
Voyons dans VSCode :
Ignorer le fichier .env
Et enfin dernière chose, et pas des moindre :
Nous avons stocké ces variables dans le fichier .env pour que personne ne puisse accéder aux données sensibles, mais si on « push » vers GitHub, la situation revient au même. Il faut donc ne pas envoyer ce fichier .env , et le garder rien que pour nous !!!
Pour cela nous avons le fichier .gitignore. Si toutefois vous n’en n’avez pas créer lors de la création de votre repository, pas de soucis, il vous suffit de le créer maintenant.
A la racine de votre dossier principal, vous créez un fichier nommé .gitignore
Et dans ce fichier, il vous suffit d’ajouter la ligne avec .env
Ainsi votre fichier .env ne sera jamais envoyé lors de vos push.
Je vous conseille également d’y ajouter le dossier node_modules également, si ce n’est pas déjà fait.
Je vous montre mon fichier .gitignore sur VSCode :
Voilà pour ce petit bonus, qui je l’espère vous sera utile tout comme la création d’une base de données sur MongoDB, et la connexion avec l’API.
Je pense qu’un éclairage était utile, car les cours ou la documentation ne sont pas toujours très clairs.
J’espère l’avoir été pour ma part et que cet article vous aura été utile.
Cette fois, je vous laisse continuer à travailler, et vais en faire de même.
Bon courage et Bonne réussite à tous.
HAPPY Code !!
N’hésitez pas à laisser vos commentaires.
Vous pouvez aussi vous abonnez en créant un compte gratuit sur le site. Cela m’aidera en retour.
Vous pouvez également me rejoindre en vous abonnant à ma chaîne YouTube, et/ou à ma page Facebook ou Instagram
Merci pour votre lecture et à bientôt.
En attendant, prenez soin de vous, et surtout, restez curieux !
2 Responses
As a Newbie, I am permanently searching online for articles that can be of assistance to me. Thank you
You are a very clever person!