Zoeken…


Opmerkingen

In mangoest, worden middlewares ook wel als pre en post haken.

Er zijn twee soorten middleware

Beide middleware ondersteuning voor en na haken.

  1. Middleware voor documenten

    Het wordt ondersteund voor documentfuncties init , validate , save en remove

  1. Vraag middleware

    Het wordt ondersteund voor findOne count , find , findOne , findOneAndRemove , findOneAndUpdate , insertMany en update .


Pre en Post haken

Er zijn twee soorten Pre haken

  1. serie-

    Zoals de naam al doet vermoeden, wordt het in seriële volgorde uitgevoerd, het ene na het andere

  1. parallel

    Parallel middleware biedt meer fijnkorrelig flow control en de hooked method wordt niet uitgevoerd totdat done wordt aangeroepen door alle parallelle middleware.

Post- middleware wordt uitgevoerd na de hooked method en alle pre middleware zijn voltooid.


gekoppelde methoden zijn de functies die worden ondersteund door document middleware. init, validate, save, remove

Middleware voor het hash-gebruikerswachtwoord voordat het wordt opgeslagen

Dit is een voorbeeld van Serial Document Middleware

In dit voorbeeld zullen we een middleware schrijven die het wachtwoord voor platte tekst omzet in een gehasht wachtwoord voordat we het opslaan in de database.

Deze middleware wordt automatisch geactiveerd bij het maken van een nieuwe gebruiker of het bijwerken van bestaande gebruikersgegevens.


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

Elke keer als we een gebruiker opslaan, controleert deze middleware of het wachtwoord is ingesteld en is gewijzigd (dit is dus het hash-gebruikerswachtwoord wordt niet gewijzigd als het niet is gewijzigd.)


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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow