SlideShare une entreprise Scribd logo
1  sur  90
Télécharger pour lire hors ligne
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
É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
Lorsque le fichier est téléchargé et analysé, il est placé dans un dossier
temporaire sur votre ordinateur.
Formateur Jaouad Assabbour
É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
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
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
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
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
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
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
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
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
Ce qui vous donnera ce résultat :
Formateur Jaouad Assabbour
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
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
Si la table existe déjà, utilisez le mot clé ALTER TABLE :
Formateur Jaouad Assabbour
Formateur Jaouad Assabbour
Formateur Jaouad Assabbour
Formateur Jaouad Assabbour
Formateur Jaouad Assabbour
Formateur Jaouad Assabbour
Formateur Jaouad Assabbour
Formateur Jaouad Assabbour
Formateur Jaouad Assabbour
Formateur Jaouad Assabbour
Formateur Jaouad Assabbour
Formateur Jaouad Assabbour
Formateur Jaouad Assabbour
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
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
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
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
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
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
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
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
É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
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
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
Supprimer l'enregistrement
Vous pouvez supprimer des enregistrements d'une table existante à l'aide de
l'instruction "DELETE FROM" :
Formateur Jaouad Assabbour
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
Tableau de mise à jour
Vous pouvez mettre à jour des enregistrements existants dans une table à
l'aide de l'instruction "UPDATE" :
Formateur Jaouad Assabbour
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Exemple
Joignez le(s) document(s) "produits" correspondant(s) à la collection
"commandes" :
FIN …
Formateur Jaouad Assabbour
Formateur Jaouad Assabbour

Contenu connexe

Similaire à nodejs.pdf

Server Side Javascript in the cloud
Server Side Javascript in the cloudServer Side Javascript in the cloud
Server Side Javascript in the cloudstefounet
 
JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?benjguin
 
JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?Microsoft
 
Mysql Apche PHP sous linux
Mysql Apche PHP sous linuxMysql Apche PHP sous linux
Mysql Apche PHP sous linuxKhalid ALLILI
 
Tp1 - WS avec JAXWS
Tp1 - WS avec JAXWSTp1 - WS avec JAXWS
Tp1 - WS avec JAXWSLilia Sfaxi
 
Mop export-dataloader-salesforce-en-ligne-commande
Mop export-dataloader-salesforce-en-ligne-commandeMop export-dataloader-salesforce-en-ligne-commande
Mop export-dataloader-salesforce-en-ligne-commandeCyrille Coeurjoly
 
Jquery
JqueryJquery
Jquerykrymo
 
Mise en place d'active directory sous windows serveur 22
Mise en place d'active directory sous windows serveur 22Mise en place d'active directory sous windows serveur 22
Mise en place d'active directory sous windows serveur 22ImnaTech
 
Installation et configuration d'openbravo
Installation et configuration d'openbravoInstallation et configuration d'openbravo
Installation et configuration d'openbravoSoumia Brabije
 
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniterAtsé François-Xavier KOBON
 
docker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyugdocker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyugamine17157
 
Java dans Windows Azure, l'exemple de JOnAS
Java dans Windows Azure, l'exemple de JOnASJava dans Windows Azure, l'exemple de JOnAS
Java dans Windows Azure, l'exemple de JOnASGuillaume Sauthier
 

Similaire à nodejs.pdf (20)

Server Side Javascript in the cloud
Server Side Javascript in the cloudServer Side Javascript in the cloud
Server Side Javascript in the cloud
 
JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?
 
JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?
 
APACHE HTTP
APACHE HTTPAPACHE HTTP
APACHE HTTP
 
Mysql Apche PHP sous linux
Mysql Apche PHP sous linuxMysql Apche PHP sous linux
Mysql Apche PHP sous linux
 
Serveur Web (2)
Serveur Web (2)Serveur Web (2)
Serveur Web (2)
 
Springioc
SpringiocSpringioc
Springioc
 
Présentation1
Présentation1Présentation1
Présentation1
 
Cours jee 1
Cours jee 1Cours jee 1
Cours jee 1
 
Tp1 - WS avec JAXWS
Tp1 - WS avec JAXWSTp1 - WS avec JAXWS
Tp1 - WS avec JAXWS
 
Mop export-dataloader-salesforce-en-ligne-commande
Mop export-dataloader-salesforce-en-ligne-commandeMop export-dataloader-salesforce-en-ligne-commande
Mop export-dataloader-salesforce-en-ligne-commande
 
Jquery
JqueryJquery
Jquery
 
Chap android
Chap androidChap android
Chap android
 
Livre Blanc Web temps réel - Node JS
Livre Blanc Web temps réel - Node JSLivre Blanc Web temps réel - Node JS
Livre Blanc Web temps réel - Node JS
 
Mise en place d'active directory sous windows serveur 22
Mise en place d'active directory sous windows serveur 22Mise en place d'active directory sous windows serveur 22
Mise en place d'active directory sous windows serveur 22
 
Installation et configuration d'openbravo
Installation et configuration d'openbravoInstallation et configuration d'openbravo
Installation et configuration d'openbravo
 
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
docker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyugdocker-workshop-by-rbk.pdf jhuhiuguigugyug
docker-workshop-by-rbk.pdf jhuhiuguigugyug
 
Java dans Windows Azure, l'exemple de JOnAS
Java dans Windows Azure, l'exemple de JOnASJava dans Windows Azure, l'exemple de JOnAS
Java dans Windows Azure, l'exemple de JOnAS
 

Plus de Jaouad Assabbour (13)

Kubernetes (k8s).pdf
Kubernetes (k8s).pdfKubernetes (k8s).pdf
Kubernetes (k8s).pdf
 
docker.pdf
docker.pdfdocker.pdf
docker.pdf
 
Ansible-cours .pdf
Ansible-cours .pdfAnsible-cours .pdf
Ansible-cours .pdf
 
test-formulaire-angular.pdf
test-formulaire-angular.pdftest-formulaire-angular.pdf
test-formulaire-angular.pdf
 
spring-api-rest.pdf
spring-api-rest.pdfspring-api-rest.pdf
spring-api-rest.pdf
 
JWT-spring-boot-avancer.pdf
JWT-spring-boot-avancer.pdfJWT-spring-boot-avancer.pdf
JWT-spring-boot-avancer.pdf
 
js.pdf
js.pdfjs.pdf
js.pdf
 
ajax.pdf
ajax.pdfajax.pdf
ajax.pdf
 
Angular.pdf
Angular.pdfAngular.pdf
Angular.pdf
 
cours java complet-2.pdf
cours java complet-2.pdfcours java complet-2.pdf
cours java complet-2.pdf
 
git.pdf
git.pdfgit.pdf
git.pdf
 
SQL.pdf
SQL.pdfSQL.pdf
SQL.pdf
 
React-cours.pdf
React-cours.pdfReact-cours.pdf
React-cours.pdf
 

nodejs.pdf

  • 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
  • 89. Exemple Joignez le(s) document(s) "produits" correspondant(s) à la collection "commandes" : FIN … Formateur Jaouad Assabbour