Szukaj…


Uwagi

W przypadku mangusty Middlewares nazywane są również jako haki pre i post .

Istnieją dwa rodzaje oprogramowania pośredniego

Oba te oprogramowanie pośrednie obsługują przechwytywanie przed i po .

  1. Oprogramowanie pośrednie dla dokumentów

    init funkcje dokumentu init , validate , save i remove

  1. Zapytanie o oprogramowanie pośrednie

    Obsługiwane są funkcje zapytań: count , find , findOne , findOneAndRemove i findOneAndUpdate , insertMany i update , insertMany i update .


Haki przed i po

Istnieją dwa rodzaje haków wstępnych

  1. seryjny

    Jak sama nazwa wskazuje, jest wykonywany w kolejności szeregowej, tzn. Jeden po drugim

  1. równolegle

    Równoległe oferty middleware więcej kontroli przepływu drobnoziarnisty i hooked method nie jest wykonywany aż done jest nazywany przez wszystkich równoległego middleware.

Post Middleware są wykonywane po hooked method i wszystko jego pre Middleware zostały zakończone.


Metody przechwycone to funkcje obsługiwane przez oprogramowanie pośredniczące dla dokumentów. init, validate, save, remove

Oprogramowanie pośrednie do hashowania hasła użytkownika przed jego zapisaniem

Jest to przykład Serial Document Middleware

W tym przykładzie napiszemy oprogramowanie pośrednie, które przed zapisaniem hasła w bazie danych przekształci hasło w postaci zwykłego tekstu w hasło zakodowane.

To oprogramowanie pośrednie uruchomi się automatycznie podczas tworzenia nowego użytkownika lub aktualizacji istniejących danych użytkownika.


User.js : 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 );

Teraz za każdym razem, gdy zapisujemy użytkownika, to oprogramowanie pośrednie sprawdzi, czy hasło jest ustawione i zmodyfikowane (jest to tak, że nie hashujemy użytkowników, jeśli hasło nie jest zmodyfikowane).


App.js : 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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow