Recherche…


Remarques

En mangouste, les Middlewares sont aussi appelés pre et post hooks.

Il existe deux types de middleware

Ces deux middleware prennent en charge les pré et post- hooks.

  1. Middleware de documents

    Son support pour les fonctions document init , validate , save et remove

  1. Intergiciel de requête

    Son support pour les fonctions de requête count , find , findOne , findOneAndRemove , findOneAndUpdate , insertMany et update .


Pré et Post Crochets

Il existe deux types de pré- crochets

  1. en série

    Comme son nom l'indique, il est exécuté dans un ordre séquentiel

  1. parallèle

    Middleware parallèle offre un contrôle plus de débit à grains fins et la hooked method n'est pas exécutée jusqu'à ce que done est appelé par tous les middleware parallèles.

Post Middleware sont exécutés une fois la hooked method et tous ses pre middleware terminés.


Les méthodes accrochées sont les fonctions supportées par le middleware de document. init, validate, save, remove

Middleware pour hacher le mot de passe de l'utilisateur avant de l'enregistrer

Ceci est un exemple de Serial Document Middleware

Dans cet exemple, nous allons écrire un middleware qui convertira le mot de passe en texte brut en mot de passe haché avant de l’enregistrer dans la base de données.

Ce middleware sera automatiquement activé lors de la création d'un nouvel utilisateur ou de la mise à jour des informations utilisateur existantes.


FILENAME: User.js

// lets import mongoose first
import mongoose from 'mongoose'

// lets create a schema for the user model
const UserSchema = mongoose.Schema(
  {
    name: String,
    email: { type: String, lowercase: true, requird: true },
    password: String,
  },
);


/**
 * This is the middleware, It will be called before saving any record
 */
UserSchema.pre('save', function(next) {

  // check if password is present and is modified.
  if ( this.password && this.isModified('password') ) {

    // call your hashPassword method here which will return the hashed password.
    this.password = hashPassword(this.password);

  }

  // everything is done, so let's call the next callback.
  next();

});


// lets export it, so we can import it in other files.
export default mongoose.model( 'User', UserSchema );

Maintenant, chaque fois que nous sauvons un utilisateur, ce middleware vérifie si le mot de passe est défini et modifié (c’est pourquoi nous n’utilisons pas le mot de passe des utilisateurs si celui-ci n’a pas été modifié).


NOM App.js FICHIER: App.js

import express from 'express';
import mongoose from 'mongoose';

// lets import our User Model
import User from './User';

// connect to MongoDB
mongoose.Promise = global.Promise;
mongoose.connect('mongodb://127.0.0.1:27017/database');


let app = express();
/* ... express middlewares here .... */


app.post( '/', (req, res) => {

  /*
    req.body = {
      name: 'John Doe',
      email: '[email protected]',
      password: '!trump'
    }
   */

  // validate the POST data

  let newUser = new User({
    name: req.body.name,
    email: req.body.email,
    password: req.body.password,
  });

  newUser.save( ( error, record ) => {
    if (error) {
      res.json({
        message: 'error',
        description: 'some error occoured while saving the user in database.'
      });
    } else {
      res.json({
        message: 'success',
        description: 'user details successfully saved.',
        user: record
      });
    }
  });

});



let server = app.listen( 3000, () => {
    console.log(`Server running at http://localhost:3000` );
  }
);


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow