Ricerca…


Osservazioni

Nella mangusta, i Middlewares sono anche chiamati come pre e post hook.

Esistono due tipi di middleware

Entrambi questi supporti middleware pre e post hook.

  1. Middleware di documenti

    È supportato per le funzioni di documento init , validate , save e remove

  1. Query middleware

    Il suo supporto per le funzioni di query count , find , findOne , findOneAndRemove , findOneAndUpdate , insertMany e update .


Ganci pre e post

Esistono due tipi di pre- ami

  1. seriale

    Come suggerisce il nome, è eseguito in ordine seriale i..e uno dopo l'altro

  1. parallelo

    Middleware parallelo offre un maggiore controllo del flusso a grana fine e il hooked method viene eseguito solo quando done viene chiamato da tutti middleware parallelo.

Il middleware di posta viene eseguito dopo il hooked method e tutti i suoi pre middleware sono stati completati.


i metodi agganciati sono le funzioni supportate dal middleware del documento. init, validate, save, remove

Middleware per hash password utente prima di salvarlo

Questo è un esempio di Document Middleware Serial

In questo esempio, scriveremo un middleware che convertirà la password in testo semplice in una password con hash prima di salvarla nel database.

Questo middleware si avvia automaticamente quando si crea un nuovo utente o si aggiornano i dettagli utente esistenti.


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 );

Ora ogni volta che salviamo un utente, questo middleware controllerà se la password è impostata e modificata (questo è il modo in cui non abbiamo la password degli utenti se non è stata modificata).


FILENAME: 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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow