Dans ce cours nous répondons aux questions "Qu'est-ce que Node ?", et vous donne un aperçu de ce qui rend nodejs spécial. Nous décrirons les principales fonctionnalités et vous montrerons certains des principaux éléments constitutifs
1. Node.js
Node.js est un environnement de serveur open source.
Node.js vous permet d'exécuter JavaScript sur le serveur.
Apprendre par des exemples
Notre outil "Show Node.js" facilite l'apprentissage de Node.js, il affiche à
la fois le code et le résultat.
Formateur Jaouad Assabbour
2. Qu'est-ce que Node.js ?
• Node.js est un environnement de serveur open source
• Node.js est gratuit
• Node.js fonctionne sur différentes plates-formes (Windows, Linux, Unix,
Mac OS X, etc.)
• Node.js utilise JavaScript sur le serveur
Pourquoi Node.js ?
Node.js utilise la programmation asynchrone !
Une tâche courante pour un serveur Web peut être d'ouvrir un fichier sur le
serveur et de renvoyer le contenu au client.
Voici comment PHP ou ASP gère une demande de fichier :
1.Envoie la tâche au système de fichiers de l'ordinateur.
2.Attend pendant que le système de fichiers s'ouvre et lit le fichier.
3.Renvoie le contenu au client.
4.Prêt à traiter la prochaine demande.
Voici comment Node.js gère une demande de fichier :
1.Envoie la tâche au système de fichiers de l'ordinateur.
2.Prêt à traiter la prochaine demande.
3.Lorsque le système de fichiers a ouvert et lu le fichier, le serveur
renvoie le contenu au client.
Node.js élimine l'attente et continue simplement avec la requête suivante.
Node.js exécute une programmation asynchrone à un seul thread, non
bloquante, qui est très économe en mémoire.
Formateur Jaouad Assabbour
3. Que peut faire Node.js ?
• Node.js peut générer du contenu de page dynamique
• Node.js peut créer, ouvrir, lire, écrire, supprimer et fermer des
fichiers sur le serveur
• Node.js peut collecter des données de formulaire
• Node.js peut ajouter, supprimer, modifier des données dans votre
base de données
Qu'est-ce qu'un fichier Node.js ?
• Les fichiers Node.js contiennent des tâches qui seront exécutées sur
certains événements
• Un événement typique est quelqu'un essayant d'accéder à un port sur
le serveur
• Les fichiers Node.js doivent être lancés sur le serveur avant d'avoir
un effet
• Les fichiers Node.js ont l'extension ".js"
Formateur Jaouad Assabbour
4. Node.js Démarrer
Télécharger Node.js
Le site Web officiel de Node.js contient des instructions d'installation pour
Node.js : https://nodejs.org
Commencer
Une fois que vous avez téléchargé et installé Node.js sur votre ordinateur,
essayons d'afficher "Hello World" dans un navigateur Web.
Créez un fichier Node.js nommé "myfirst.js" et ajoutez le code suivant :
Enregistrez le fichier sur votre ordinateur : C:Users Votre nom myfirst.js
Le code indique à l'ordinateur d'écrire "Hello World!" si quelqu'un (par
exemple un navigateur Web) essaie d'accéder à votre ordinateur sur le port
8080.
Pour l'instant, vous n'avez pas besoin de comprendre le code. Il sera
expliqué plus tard.
Formateur Jaouad Assabbour
5. Interface de ligne de commande
Les fichiers Node.js doivent être lancés dans le programme "Command
Line Interface" de votre ordinateur.
La façon d'ouvrir l'interface de ligne de commande sur votre ordinateur
dépend du système d'exploitation. Pour les utilisateurs de Windows,
appuyez sur le bouton de démarrage et recherchez "Invite de commandes",
ou écrivez simplement "cmd" dans le champ de recherche.
Naviguez jusqu'au dossier qui contient le fichier "myfirst.js", la fenêtre de
l'interface de ligne de commande devrait ressembler à ceci :
Lancer le fichier Node.js
Le fichier que vous venez de créer doit être initié par Node.js avant qu'une
action puisse avoir lieu.
Démarrez votre interface de ligne de commande, écrivez node
myfirst.js et appuyez sur Entrée :
Maintenant, votre ordinateur fonctionne comme un serveur !
Démarrez votre navigateur et saisissez l'adresse : http://localhost:8080
Formateur Jaouad Assabbour
6. Node.js Modules
Qu'est-ce qu'un module dans Node.js ?
Considérez que les modules sont identiques aux bibliothèques JavaScript.
Un ensemble de fonctions que vous souhaitez inclure dans votre
application.
Modules intégrés
Node.js possède un ensemble de modules intégrés que vous pouvez utiliser
sans aucune autre installation.
Consultez notre Référence des modules intégrés pour une liste complète des
modules.
Inclure les modules
Pour inclure un module, utilisez la fonction require() avec le nom du
module :
Formateur Jaouad Assabbour
7. Votre application a maintenant accès au module HTTP et est capable de
créer un serveur :
Créez vos propres modules
Vous pouvez créer vos propres modules, et les inclure facilement dans vos
applications.
L'exemple suivant crée un module qui renvoie un objet date et heure :
Utilisez le mot- clé exports pour rendre les propriétés et les méthodes
disponibles en dehors du fichier de module.
Enregistrez le code ci-dessus dans un fichier appelé "myfirstmodule.js"
Formateur Jaouad Assabbour
8. Incluez votre propre module
Vous pouvez désormais inclure et utiliser le module dans n'importe lequel
de vos fichiers Node.js.
Notez que nous utilisons ./ pour localiser le module, cela signifie que le module est
situé dans le même dossier que le fichier Node.js.
Enregistrez le code ci-dessus dans un fichier appelé "demo_module.js", et lancez le
fichier :
Formateur Jaouad Assabbour
9. Module HTTP Node.js
Le module HTTP intégré
Node.js possède un module intégré appelé HTTP, qui permet à Node.js de
transférer des données via le protocole HTTP (Hyper Text Transfer
Protocol).
Pour inclure le module HTTP, utilisez la méthode require():
Node.js en tant que serveur Web
Le module HTTP peut créer un serveur HTTP qui écoute les ports du serveur et
renvoie une réponse au client.
Utilisez la méthode createServer() pour créer un serveur HTTP :
La fonction passée dans la méthode http.createServer() sera exécutée
lorsque quelqu'un tentera d'accéder à l'ordinateur sur le port 8080.
Formateur Jaouad Assabbour
10. Ajouter HTTP Header
Si la réponse du serveur HTTP est censée être affichée au format HTML,
vous devez inclure un en-tête HTTP avec le type de contenu correct :
Le premier argument de la méthode res.writeHead() est le code d'état, 200
signifie que tout est OK, le deuxième argument est un objet contenant les en-têtes de
réponse.
Lire la chaîne de requête
La fonction passée à http.createServer() a un argument req qui
représente la demande du client, sous la forme d'un objet (objet
http.IncomingMessage).
Cet objet a une propriété appelée "url" qui contient la partie de l'url qui vient
après le nom de domaine :
Formateur Jaouad Assabbour
11. Module de système de fichiers Node.js
Node.js en tant que serveur de fichiers
Le module de système de fichiers Node.js vous permet de travailler avec le
système de fichiers de votre ordinateur.
Pour inclure le module File System, utilisez la méthode require():
Utilisation courante du module File System :
• Lire des fichiers
• Créer des fichiers
• Mettre à jour les fichiers
• Supprimer les fichiers
• Renommer les fichiers
Lire les fichiers
La méthode fs.readFile()est utilisée pour lire des fichiers sur votre ordinateur.
Formateur Jaouad Assabbour
12. Supposons que nous ayons le fichier HTML suivant (situé dans le même dossier que
Node.js) :
Créez un fichier Node.js qui lit le fichier HTML et renvoyez le contenu :
Créer des fichiers
Le module File System propose des méthodes pour créer de nouveaux fichiers :
• fs.appendFile()
• fs.open()
• fs.writeFile()
La méthode fs.appendFile() ajoute le contenu spécifié à un fichier. Si le
fichier n'existe pas, le fichier sera créé :
Formateur Jaouad Assabbour
13. La méthode fs.open() prend un "drapeau" comme deuxième argument, si le
drapeau est "w" pour "écriture", le fichier spécifié est ouvert en écriture. Si le fichier
n'existe pas, un fichier vide est créé :
La méthode fs.writeFile() remplace le fichier spécifié et son contenu s'il
existe. Si le fichier n'existe pas, un nouveau fichier, contenant le contenu spécifié,
sera créé :
Formateur Jaouad Assabbour
14. Mettre à jour les fichiers
Le module File System dispose de méthodes pour mettre à jour les fichiers :
• fs.appendFile()
• fs.writeFile()
La méthode fs.appendFile() ajoute le contenu spécifié à la fin du fichier
spécifié :
Formateur Jaouad Assabbour
15. La méthode fs.writeFile() remplace le fichier et le contenu spécifiés :
Supprimer les fichiers
Pour supprimer un fichier avec le module File System, utilisez la fs.unlink()
méthode.
La méthode fs unlink() supprime le fichier spécifié :
Formateur Jaouad Assabbour
16. Renommer les fichiers
Pour renommer un fichier avec le module File System, utilisez la méthode
fs.rename().
La méthode fs.rename() renomme le fichier spécifié :
Événements dans Node.js
Chaque action sur un ordinateur est un événement. Comme lorsqu'une connexion est
établie ou qu'un fichier est ouvert.
Les objets dans Node.js peuvent déclencher des événements, comme l'objet
readStream déclenche des événements lors de l'ouverture et de la fermeture d'un
fichier :
Formateur Jaouad Assabbour
17. Module Événements
Node.js a un module intégré, appelé "Events", où vous pouvez créer, déclencher
et écouter vos propres événements.
Pour inclure le module Events intégré, utilisez la méthode require(). De
plus, toutes les propriétés et méthodes d'événement sont une instance d'un objet
EventEmitter. Pour pouvoir accéder à ces propriétés et méthodes, créez un
objet EventEmitter :
L’objet EventEmitter
Vous pouvez affecter des gestionnaires d'événements à vos propres événements
avec l'objet EventEmitter.
Dans l'exemple ci-dessous, nous avons créé une fonction qui sera exécutée
lorsqu'un événement "cri" est déclenché.
Pour déclencher un événement, utilisez la méthode emit().
Formateur Jaouad Assabbour
18. Télécharger des fichiers Node.js
Le formidable module
Il existe un très bon module pour travailler avec les téléchargements de fichiers,
appelé "Formidable".
Le module Formidable peut être téléchargé et installé à l'aide de NPM :
Formateur Jaouad Assabbour
19. Après avoir téléchargé le module Formidable, vous pouvez inclure le module
dans n'importe quelle application :
Télécharger des fichiers
Vous êtes maintenant prêt à créer une page Web dans Node.js qui permet à
l'utilisateur de télécharger des fichiers sur votre ordinateur :
Formateur Jaouad Assabbour
20. Étape 1 : Créer un formulaire de téléchargement
Créez un fichier Node.js qui écrit un formulaire HTML, avec un champ de
téléchargement :
Étape 2 : Analyser le fichier téléchargé
Incluez le module Formidable pour pouvoir analyser le fichier téléchargé une
fois qu'il atteint le serveur.
Formateur Jaouad Assabbour
21. Lorsque le fichier est téléchargé et analysé, il est placé dans un dossier
temporaire sur votre ordinateur.
Formateur Jaouad Assabbour
22. Étape 3 : Enregistrer le fichier
Lorsqu'un fichier est téléchargé avec succès sur le serveur, il est placé dans un
dossier temporaire.
Le chemin d'accès à ce répertoire se trouve dans l'objet "files", passé en
troisième argument dans la fonction parse() de rappel de la méthode.
Pour déplacer le fichier dans le dossier de votre choix, utilisez le module File
System, et renommez le fichier :
Formateur Jaouad Assabbour
23. Node.js Envoyer un e-mail
Le module Nodemailer
Le module Nodemailer permet d'envoyer facilement des emails depuis votre
ordinateur.
Le module Nodemailer peut être téléchargé et installé à l'aide de npm :
Après avoir téléchargé le module Nodemailer, vous pouvez inclure le
module dans n'importe quelle application :
Formateur Jaouad Assabbour
24. Envoyer un e-mail
Vous êtes maintenant prêt à envoyer des e-mails depuis votre serveur.
Utilisez le nom d'utilisateur et le mot de passe de votre fournisseur de
messagerie sélectionné pour envoyer un e-mail. Ce tutoriel va vous montrer
comment utiliser votre compte Gmail pour envoyer un email :
Et c'est tout! Maintenant, votre serveur est capable d'envoyer des e-mails.
Formateur Jaouad Assabbour
25. Récepteurs multiples
Pour envoyer un e-mail à plusieurs destinataires, ajoutez-les à la propriété
"to" de l'objet mailOptions, séparés par des virgules :
Envoyer HTML
Pour envoyer du texte au format HTML dans votre e-mail, utilisez la
propriété "html" au lieu de la propriété "text":
Formateur Jaouad Assabbour
26. Node.js MySQL
Node.js peut être utilisé dans les applications de base de données.
L'une des bases de données les plus populaires est MySQL.
Base de données MySQL
Pour pouvoir tester les exemples de code, MySQL doit être
installé sur votre ordinateur.
Vous pouvez télécharger une base de données MySQL gratuite sur
https://www.mysql.com/downloads/ .
Installer le pilote MySQL
Une fois que MySQL est opérationnel sur votre ordinateur, vous pouvez y
accéder en utilisant Node.js.
Pour accéder à une base de données MySQL avec Node.js, vous avez
besoin d'un pilote MySQL. Ce tutoriel utilisera le module "mysql",
téléchargé depuis NPM.
Pour télécharger et installer le module « mysql », ouvrez le terminal de
commande et exécutez ce qui suit :
Formateur Jaouad Assabbour
27. Vous avez maintenant téléchargé et installé un pilote de base de données
mysql.
Node.js peut utiliser ce module pour manipuler la base de données MySQL
:
Créer une connexion
Commencez par créer une connexion à la base de données.
Utilisez le nom d'utilisateur et le mot de passe de votre base de données
MySQL.
Enregistrez le code ci-dessus dans un fichier appelé "demo_db_connection.js"
et exécutez le fichier :
Formateur Jaouad Assabbour
28. Ce qui vous donnera ce résultat :
Vous pouvez maintenant commencer à interroger la base de données à l'aide
d'instructions SQL.
Formateur Jaouad Assabbour
29. Interroger une base de données
Utilisez des instructions SQL pour lire (ou écrire dans) une base de
données MySQL. Ceci est également appelé "interroger" la base de
données.
L'objet de connexion créé dans l'exemple ci-dessus, possède une méthode
pour interroger la base de données :
La méthode de requête prend une instruction sql comme paramètre et
renvoie le résultat.
Apprenez à lire, écrire, supprimer et mettre à jour une base de données
dans les chapitres suivants.
Formateur Jaouad Assabbour
30. Node.js MySQL Créer une base de données
Création d'une base de données
Pour créer une base de données dans MySQL, utilisez l'instruction
"CREATE DATABASE":
Enregistrez le code ci-dessus dans un fichier appelé "demo_create_db.js"
et exécutez le fichier :
Formateur Jaouad Assabbour
31. Ce qui vous donnera ce résultat :
Formateur Jaouad Assabbour
32. Node.js MySQL Create Table
Création d'un tableau
Pour créer une table dans MySQL, utilisez l'instruction "CREATE
TABLE".
Assurez-vous de définir le nom de la base de données lorsque vous créez
la connexion :
Enregistrez le code ci-dessus dans un fichier appelé
"demo_create_table.js" et exécutez le fichier :
Formateur Jaouad Assabbour
33. Clé primaire
Lors de la création d'une table, vous devez également créer une colonne
avec une clé unique pour chaque enregistrement.
Cela peut être fait en définissant une colonne comme "INT
AUTO_INCREMENT PRIMARY KEY" qui insérera un numéro unique
pour chaque enregistrement. Commençant à 1, et augmenté de un pour
chaque enregistrement.
Formateur Jaouad Assabbour
34. Si la table existe déjà, utilisez le mot clé ALTER TABLE :
Formateur Jaouad Assabbour
47. Insérer dans le tableau
Pour remplir une table dans MySQL, utilisez l'instruction "INSERT
INTO".
Enregistrez le code ci-dessus dans un fichier appelé "demo_db_insert.js",
et exécutez le fichier :
Formateur Jaouad Assabbour
48. Insérer plusieurs enregistrements
Pour insérer plus d'un enregistrement, créez un tableau contenant les valeurs et
insérez un point d'interrogation dans le sql, qui sera remplacé par le tableau de
valeurs :
INSERT INTO customers (name, address) VALUES ?
Enregistrez le code ci-dessus dans un fichier appelé "demo_db_insert_multple.js", et
exécutez le fichier :
Formateur Jaouad Assabbour
49. L'objet de résultat
Lors de l'exécution d'une requête, un objet de résultat est renvoyé.
L'objet de résultat contient des informations sur la façon dont la requête a
affecté la table.
L'objet de résultat renvoyé par l'exemple ci-dessus ressemble à ceci :
Les valeurs des propriétés peuvent être affichées comme ceci :
.
Formateur Jaouad Assabbour
50. Obtenir l'ID inséré
Pour les tables avec un champ d'identifiant d'incrémentation automatique,
vous pouvez obtenir l'identifiant de la ligne que vous venez d'insérer en
demandant à l'objet de résultat.
Enregistrez le code ci-dessus dans un fichier appelé
"demo_db_insert_id.js", et exécutez le fichier :
Formateur Jaouad Assabbour
51. Sélection à partir d'un tableau
Pour sélectionner des données à partir d'une table dans MySQL, utilisez
l'instruction "SELECT".
SELECT * renverra toutes les colonnes
Enregistrez le code ci-dessus dans un fichier appelé "demo_db_select.js" et
exécutez le fichier :
Formateur Jaouad Assabbour
52. Sélection de colonnes
Pour ne sélectionner que certaines colonnes d'une table, utilisez l'instruction
"SELECT" suivie du nom de la colonne.
Enregistrez le code ci-dessus dans un fichier appelé "demo_db_select2.js"
et exécutez le fichier :
L'objet de résultat
Comme vous pouvez le voir dans le résultat de l'exemple ci-dessus, l'objet de résultat est un tableau
contenant chaque ligne en tant qu'objet.
Pour renvoyer par exemple l'adresse du troisième enregistrement, il suffit de se référer à la propriété
address du troisième objet tableau :
L'objet Fields
Le troisième paramètre de la fonction de rappel est un tableau contenant des informations sur
chaque champ du résultat.
Formateur Jaouad Assabbour
53. Sélectionner avec un filtre
Lors de la sélection d'enregistrements dans une table, vous pouvez filtrer la
sélection à l'aide de l'instruction "WHERE" :
Enregistrez le code ci-dessus dans un fichier appelé "demo_db_where.js"
et exécutez le fichier :
[
{ id: 11, name: 'Ben', address: 'Park Lane 38'}
]
Formateur Jaouad Assabbour
54. Caractères génériques
Vous pouvez également sélectionner les enregistrements qui commencent,
incluent ou se terminent par une lettre ou une expression donnée.
Utilisez le caractère générique '%' pour représenter zéro, un ou plusieurs
caractères :
Enregistrez le code ci-dessus dans un fichier et exécutez le fichier :
[
{ id: 8, name: 'Richard', address: 'Sky st 331'},
{ id: 14, name: 'Viola', address: 'Sideway 1633'}
]
Formateur Jaouad Assabbour
55. Échapper aux valeurs de requête
Lorsque les valeurs de requête sont des variables fournies par l'utilisateur,
vous devez échapper les valeurs.
Cela permet d'éviter les injections SQL, qui est une technique de piratage
Web courante pour détruire ou abuser de votre base de données.
Le module MySQL a des méthodes pour échapper les valeurs de requête :
Vous pouvez également utiliser a ? comme espace réservé pour les
valeurs que vous souhaitez échapper.
Dans ce cas, la variable est envoyée comme second paramètre dans la
méthode query() :
Formateur Jaouad Assabbour
56. Si vous avez plusieurs espaces réservés, le tableau contient plusieurs
valeurs, dans cet ordre :
Trier le résultat
Utilisez l'instruction ORDER BY pour trier le résultat par ordre croissant ou
décroissant.
Le mot-clé ORDER BY trie le résultat par ordre croissant par défaut. Pour trier
le résultat par ordre décroissant, utilisez le mot-clé DESC.
Enregistrez le code ci-dessus dans un fichier et exécutez le :
Formateur Jaouad Assabbour
57. COMMANDER PAR DESC
Utilisez le mot-clé DESC pour trier le résultat par ordre décroissant.
Enregistrez le code ci-dessus dans un fichier et exécutez le :
[
{ id: 12, name: 'William', address: 'Central st 954'},
{ id: 14, name: 'Viola', address: 'Sideway 1633'},
{ id: 10, name: 'Vicky', address: 'Yellow Garden 2'},
{ id: 9, name: 'Susan', address: 'One way 98'},
{ id: 6, name: 'Sandy', address: 'Ocean blvd 2'},
{ id: 8, name: 'Richard', address: 'Sky st 331'},
{ id: 2, name: 'Peter', address: 'Lowstreet 4'},
{ id: 7, name: 'Betty', address: 'Green Grass 1'},
{ id: 11, name: 'Ben', address: 'Park Lane 38'},
{ id: 3, name: 'Amy', address: 'Apple st 652'}
]
Formateur Jaouad Assabbour
58. Supprimer l'enregistrement
Vous pouvez supprimer des enregistrements d'une table existante à l'aide de
l'instruction "DELETE FROM" :
Formateur Jaouad Assabbour
59. Supprimer un tableau
Vous pouvez supprimer une table existante à l'aide de l'instruction "DROP
TABLE":
Supprimer uniquement si existe
Si la table que vous souhaitez supprimer est déjà supprimée ou n'existe pas
pour toute autre raison, vous pouvez utiliser le mot-clé IF EXISTS pour
éviter d'obtenir une erreur.
Formateur Jaouad Assabbour
60. Tableau de mise à jour
Vous pouvez mettre à jour des enregistrements existants dans une table à
l'aide de l'instruction "UPDATE" :
Formateur Jaouad Assabbour
61. Limitez le résultat
Vous pouvez limiter le nombre d'enregistrements renvoyés par la requête à l'aide de
l'instruction "LIMIT" :
Enregistrez le code ci-dessus dans un fichieret exécutez le :
[
{ id: 1, name: 'John', address: 'Highway 71'},
{ id: 2, name: 'Peter', address: 'Lowstreet 4'},
{ id: 3, name: 'Amy', address: 'Apple st 652'},
{ id: 4, name: 'Hannah', address: 'Mountain 21'},
{ id: 5, name: 'Michael', address: 'Valley 345'}
]
Formateur Jaouad Assabbour
62. Commencer à partir d'une autre position
Si vous souhaitez renvoyer cinq enregistrements, à partir du troisième enregistrement,
vous pouvez utiliser le mot-clé "OFFSET" :
Syntaxe plus courte
Vous pouvez également écrire votre instruction SQL comme ceci "LIMIT
2, 5" qui renvoie la même chose que l'exemple de décalage ci-dessus :
Commencez à partir de la position 3 et renvoyez les 5 enregistrements.
Formateur Jaouad Assabbour
63. Joindre deux tables ou plus
Vous pouvez combiner des lignes de deux tables ou plus, en fonction d'une colonne
liée entre elles, à l'aide d'une instruction JOIN.
Considérez que vous avez une table "utilisateurs" et une table "produits":
Ces deux tables peuvent être combinées en utilisant le champ des
utilisateurs favorite_product et le champ des produits id.
Formateur Jaouad Assabbour
64. Sélectionnez les enregistrements avec une correspondance dans les deux
tables :
Remarque : Vous pouvez utiliser INNER JOIN au lieu de JOIN. Ils vous
donneront tous les deux le même résultat.
Ce qui vous donnera ce résultat :
[
{ user: 'John', favorite: 'Chocolate Heaven' },
{ user: 'Peter', favorite: 'Chocolate Heaven' },
{ user: 'Amy', favorite: 'Tasty Lemons' }
]
Formateur Jaouad Assabbour
65. Joint gauche
Si vous souhaitez renvoyer tous les utilisateurs, qu'ils aient ou non un produit
favori, utilisez l'instruction LEFT JOIN :
Sélectionnez tous les utilisateurs et leur produit préféré :
Ce qui vous donnera ce résultat :
[
{ user: 'John', favorite: 'Chocolate Heaven' },
{ user: 'Peter', favorite: 'Chocolate Heaven' },
{ user: 'Amy', favorite: 'Tasty Lemons' },
{ user: 'Hannah', favorite: null },
{ user: 'Michael', favorite: null }
]
Formateur Jaouad Assabbour
66. Joindre à droite
Si vous souhaitez renvoyer tous les produits et les utilisateurs qui les ont
comme favoris, même si aucun utilisateur ne les a comme favoris, utilisez
l'instruction RIGHT JOIN :
Ce qui vous donnera ce résultat :
[
{ user: 'John', favorite: 'Chocolate Heaven' },
{ user: 'Peter', favorite: 'Chocolate Heaven' },
{ user: 'Amy', favorite: 'Tasty Lemons' },
{ user: null, favorite: 'Vanilla Dreams' }
]
Formateur Jaouad Assabbour
67. Node.js MongoDB
Node.js peut être utilisé dans les applications de base de données.
L'une des bases de données NoSQL les plus populaires est MongoDB.
MongoDB
Pour pouvoir expérimenter les exemples de code, vous aurez besoin d'accéder à
une base de données MongoDB.
Vous pouvez télécharger une base de données MongoDB gratuite sur
https://www.mongodb.com .
Ou commencez tout de suite avec un service cloud MongoDB sur
https://www.mongodb.com/cloud/atlas .
Formateur Jaouad Assabbour
68. Installer le pilote MongoDB
Essayons d'accéder à une base de données MongoDB avec Node.js.
Pour télécharger et installer le pilote MongoDB officiel, ouvrez le terminal de
commande et exécutez ce qui suit :
C:UsersYour Name> npm install mongodb
Vous avez maintenant téléchargé et installé un pilote de base de données
mongodb.
Node.js peut utiliser ce module pour manipuler les bases de données MongoDB
:
Formateur Jaouad Assabbour
69. Node.js MongoDB Créer une base de données
Pour créer une base de données dans MongoDB, commencez par créer un objet
MongoClient, puis spécifiez une URL de connexion avec l'adresse IP correcte et
le nom de la base de données que vous souhaitez créer.
MongoDB créera la base de données si elle n'existe pas et établira une
connexion avec celle-ci.
Enregistrez le code ci-dessus dans un fichier et exécutez le :
Ce qui vous donnera ce résultat : Database created !
Important : Dans MongoDB, une base de données n'est pas créée tant qu'elle n'a pas
de contenu !
MongoDB attend que vous ayez créé une collection (table), avec au moins un
document (enregistrement) avant de créer réellement la base de données (et la
collection).
Formateur Jaouad Assabbour
70. Créer une collection
Pour créer une collection dans MongoDB, utilisez la méthode create
Collection():
Créez une collection appelée "clients" :
Enregistrez le code ci-dessus dans un fichier et exécutez le :
Formateur Jaouad Assabbour
71. Insérer dans la collection
Pour insérer un enregistrement, ou un document comme on l'appelle dans
MongoDB, dans une collection, nous utilisons la méthode insertOne().
Un document dans MongoDB est identique à un enregistrement dans MySQL
Le premier paramètre de la méthode insertOne()est un objet contenant le(s)
nom(s) et valeur(s) de chaque champ du document que vous souhaitez insérer.
Il prend également une fonction de rappel où vous pouvez travailler avec toutes les
erreurs ou le résultat de l'insertion :
Formateur Jaouad Assabbour
72. Insérer plusieurs documents
Pour insérer plusieurs documents dans une collection dans MongoDB, nous utilisons
la méthode insertMany().
Le premier paramètre de la méthode insertMany()est un tableau d'objets,
contenant les données que vous souhaitez insérer.
Il prend également une fonction de rappel où vous pouvez travailler avec toutes les
erreurs ou le résultat de l'insertion :
Formateur Jaouad Assabbour
73. L'objet de résultat
Lors de l'exécution de la méthode insertMany(), un objet de résultat
est renvoyé.
L'objet de résultat contient des informations sur la manière dont l'insertion
a affecté la base de données.
L'objet renvoyé par l'exemple ci-dessus ressemblait à ceci :
Formateur Jaouad Assabbour
74. Le champ _id
Si vous ne spécifiez pas de _id champ, MongoDB en ajoutera un pour
vous et attribuera un identifiant unique à chaque document.
Dans l'exemple ci-dessus, aucun _idchamp n'a été spécifié, et comme
vous pouvez le voir à partir de l'objet de résultat, MongoDB a attribué un
_id unique pour chaque document.
Si vous spécifiez le _idchamp, la valeur doit être unique pour chaque
document :
Enregistrez le code ci-dessus dans un fichier et exécutez le :
Formateur Jaouad Assabbour
75. Node.js MongoDB Find
Dans MongoDB, nous utilisons les méthodes find et findOne pour
rechercher des données dans une collection.
Tout comme l' instruction SELECT est utilisée pour rechercher des
données dans une table d'une base de données MySQL.
findOne()
Pour sélectionner les données d'une collection dans MongoDB, nous
pouvons utiliser la méthode findOne().
La méthode findOne()renvoie la première occurrence de la sélection.
Le premier paramètre de la méthode findOne() est un objet de requête.
Dans cet exemple, nous utilisons un objet de requête vide, qui sélectionne
tous les documents d'une collection (mais ne renvoie que le premier
document).
Enregistrez le code ci-dessus dans un fichier et exécutez le :
Formateur Jaouad Assabbour
76. find()
Pour sélectionner des données à partir d'une table dans MongoDB, nous
pouvons également utiliser la méthode find() .
La méthode find() renvoie toutes les occurrences de la sélection.
Le premier paramètre de la méthode find() est un objet de requête.
Dans cet exemple, nous utilisons un objet de requête vide, qui sélectionne
tous les documents de la collection.
Aucun paramètre dans la méthode find() ne vous donne le même résultat
que SELECT * dans MySQL.
Formateur Jaouad Assabbour
77. Find Some
Le deuxième paramètre de la méthode find()est l' objet projection
qui décrit les champs à inclure dans le résultat.
Ce paramètre est facultatif et s'il est omis, tous les champs seront inclus
dans le résultat.
Enregistrez le code ci-dessus dans un fichier et exécutez le :
Formateur Jaouad Assabbour
78. Node.js Requête MongoDB
Filtrer le résultat
Lors de la recherche de documents dans une collection, vous pouvez filtrer
le résultat à l'aide d'un objet de requête.
Le premier argument de la méthode find() est un objet de requête et est
utilisé pour limiter la recherche.
Trouver des documents avec l'adresse "Park Lane 38":
Formateur Jaouad Assabbour
79. Filtrer avec des expressions régulières
Vous pouvez écrire des expressions régulières pour trouver exactement ce
que vous recherchez.
Les expressions régulières ne peuvent être utilisées que pour interroger des
chaînes .
Pour rechercher uniquement les documents dont le champ "adresse"
commence par la lettre "S", utilisez l'expression régulière /^S/:
Formateur Jaouad Assabbour
80. Node.js MongoDB Sort
Trier le résultat
Utilisez la méthode sort() pour trier le résultat par ordre croissant ou décroissant.
La méthode sort() prend un paramètre, un objet définissant l'ordre de tri.
Triez le résultat par ordre alphabétique de nom :
Formateur Jaouad Assabbour
81. Node.js MongoDB Delete
Supprimer le document
Pour supprimer un enregistrement, ou un document comme on l'appelle dans
MongoDB, nous utilisons la méthode deleteOne().
Le premier paramètre de la méthode deleteOne()est un objet de requête
définissant le document à supprimer.
Supprimez le document avec l'adresse "Mountain 21":
Formateur Jaouad Assabbour
82. Supprimer plusieurs
Pour supprimer plusieurs documents, utilisez la méthode deleteMany().
Le premier paramètre de la méthode deleteMany()est un objet de requête définissant les
documents à supprimer.
Formateur Jaouad Assabbour
83. Drop Collection
Vous pouvez supprimer une table, ou une collection comme on l'appelle dans
MongoDB, en utilisant la méthode drop().
La méthode drop() prend une fonction de rappel contenant l'objet d'erreur et le
paramètre de résultat qui renvoie true si la collection a été supprimée avec succès,
sinon elle renvoie false.
Formateur Jaouad Assabbour
84. db.dropCollection
Vous pouvez également utiliser la méthode dropCollection() pour
supprimer une table (collection).
La méthode dropCollection() prend deux paramètres : le nom de la
collection et une fonction de rappel.
Supprimez la collection "clients", en utilisant dropCollection() :
Formateur Jaouad Assabbour
85. MongoDB Update
Mettre à jour le document
Vous pouvez mettre à jour un enregistrement, ou un document tel qu'il est
appelé dans MongoDB, en utilisant la méthode updateOne().
Le premier paramètre de la méthode updateOne() est un objet de requête
définissant le document à mettre à jour.
Formateur Jaouad Assabbour
86. Mettre à jour uniquement des champs spécifiques
Lors de l'utilisation de l' opérateur $set, seuls les champs
spécifiés sont mis à jour :
Mettre à jour de nombreux documents
Pour mettre à jour tous les documents répondant aux critères de la requête,
utilisez la méthode updateMany().
Mettez à jour tous les documents dont le nom commence par la lettre "S":
Formateur Jaouad Assabbour
87. Limitez le résultat
Pour limiter le résultat dans MongoDB, nous utilisons la méthode
limit().
La méthode limit()prend un paramètre, un nombre définissant le
nombre de documents à renvoyer.
Considérez que vous avez une collection "clients":
Formateur Jaouad Assabbour
88. Rejoindre les collections
MongoDB n'est pas une base de données relationnelle, mais vous pouvez effectuer
une jointure externe gauche en utilisant l' $lookup.
L' $lookup vous permet de spécifier la collection que vous souhaitez joindre à la
collection actuelle et les champs qui doivent correspondre.
Considérez que vous avez une collection "commandes" et une collection "produits":
Formateur Jaouad Assabbour