Base de données

1 h Niveau 6

Nous continuons à recevoir des demandes, mais nous finissons par ne les stocker nulle part. Nous avons besoin d'une base de données pour stocker les données. Pour cela, nous allons utiliser la base de données NoSQL appelée MongoDB.

Afin d'utiliser Mongo avec Express, nous avons besoin d'une API client pour node. Il existe de multiples options pour nous, mais pour ce tutoriel, nous nous en tiendrons à Mongoose. Mongoose est utilisé pour la modélisation de documents dans Node pour MongoDB. Pour la modélisation de documents, nous créons un modèle (un peu comme une classe dans la programmation orientée document), puis nous produisons des documents en utilisant ce modèle (comme nous créons des documents d'une classe dans la POO). Tous nos traitements seront effectués sur ces "documents", puis finalement, nous écrirons ces documents dans notre base de données.

Paramétrage de Mongoose

Maintenant que vous avez installé Mongo, installons Mongoose, de la même manière que nous avons installé les autres paquets de node.

npm install --save mongoose

Avant de commencer à utiliser Mongoose, nous devons créer une base de données en utilisant le shell Mongo. Pour créer une nouvelle base de données, ouvrez votre terminal et entrez "mongo". Un shell Mongo va démarrer, entrez le code suivant - use my_db

Une nouvelle base de données sera créée pour vous. Chaque fois que vous ouvrirez le shell mongo, il utilisera par défaut la base de données "test" et vous devrez la changer pour votre base de données en utilisant la même commande que ci-dessus.

Pour utiliser Mongoose, nous allons l'exiger dans notre fichier index.js, puis nous connecter au service mongodb qui fonctionne sur mongodb://localhost.

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/my_db');

Maintenant que notre application est connectée à notre base de données, créons un nouveau modèle. Ce modèle agira comme une collection dans notre base de données. Pour créer un nouveau modèle, utilisez le code suivant, avant de définir une route.

var personSchema = mongoose.Schema({
   name: String,
   age: Number,
   nationality: String
});
var Person = mongoose.model("Person", personSchema);

Le code ci-dessus définit le schéma d'une personne et est utilisé pour créer une personne en mode Mongoose.

Sauvegarde de Documents

Maintenant, nous allons créer un nouveau formulaire html ; ce formulaire vous aidera à obtenir les détails d'une personne et à les enregistrer dans notre base de données. Pour créer le formulaire, créez un nouveau fichier de vue appelé person.pug dans le répertoire views avec le contenu suivant -

html
head
    title Person
    body
        form(action = "/person", method = "POST")
        div
            label(for = "name") Name: 
            input(name = "name")
        br
        div
            label(for = "age") Age: 
            input(name = "age")
        br
        div
            label(for = "nationality") Nationality: 
            input(name = "nationality")
        br
        button(type = "submit") Create new person

Ajoutez également une nouvelle route get dans index.js pour rendre ce document

app.get('/person', function(req, res){
    res.render('person');
});

Allez sur localhost:3000/person pour vérifier si le formulaire affiche la sortie correcte. Notez que ce n'est que l'interface utilisateur, elle n'est pas encore fonctionnelle.

Nous allons maintenant définir un gestionnaire de route post à '/person' qui traitera cette requête

app.post('/person', function(req, res){
    var personInfo = req.body; //Get the parsed information

    if(!personInfo.name || !personInfo.age || !personInfo.nationality){
        res.render('show_message', {
            message: "Sorry, you provided worng info", type: "error"});
    } else {
        var newPerson = new Person({
            name: personInfo.name,
            age: personInfo.age,
            nationality: personInfo.nationality
        });

        newPerson.save(function(err, Person){
            if(err)
                res.render('show_message', {message: "Database error", type: "error"});
            else
                res.render('show_message', {
                message: "New person added", type: "success", person: personInfo});
        });
    }
});

Dans le code ci-dessus, si nous recevons un champ vide ou si nous ne recevons aucun champ, nous enverrons une réponse d'erreur. Mais si nous recevons un document bien formé, nous créons un document newPerson à partir du modèle Person et le sauvegardons dans notre base de données à l'aide de la fonction newPerson.save(). Cette fonction est définie dans Mongoose et accepte un callback comme argument. Ce callback a 2 arguments - erreur et réponse. Ces arguments vont rendre la vue show_message.

Pour afficher la réponse de cette route, nous devons également créer une vue show_message. Créez une nouvelle vue avec le code suivant -

html
    head
        title Person
    body
        if(type == "error")
            h3(style = "color:red") #{message}
        else
            h3 New person, 
                name: #{person.name}, 
                age: #{person.age} and 
                nationality: #{person.nationality} added!

Nous disposons maintenant d'une interface pour créer des personnes.

Récupération de Documents

logo discord

Besoin d'aide ?

Rejoignez notre communauté officielle et ne restez plus seul à bloquer sur un problème !

En savoir plus