Sök…


Anmärkningar

I mongoose kallas Middlewares också som krokar pre och post .

Det finns två typer av mellanprogram

Båda dessa mellanvaror stöder krokar före och efter .

  1. Dokument mellanprogram

    Det stöds för dokumentfunktioner init , validate , save och remove

  1. Frågeställning

    Det stöds för frågefunktioner count , find , findOne , findOneAndRemove , findOneAndUpdate , insertMany och update .


Pre och Post krokar

Det finns två typer av Pre- krokar

  1. serie-

    Som namnet antyder exekveras det i serieordning i..e efter varandra

  1. parallell

    Parallell middleware erbjuder mer finkornig flödeskontroll och den hooked method körs inte förrän det är done för alla parallella mellanvaror.

Post Middleware körs efter den hooked method och all dess pre middleware har slutförts.


anslutna metoder är de funktioner som stöds av dokument mellanprogram. init, validate, save, remove

Middleware till hash användarlösenord innan du sparar det

Detta är ett exempel på Serial Document Middleware

I det här exemplet kommer vi att skriva ett mellanprogram som konverterar lösenordet till vanlig text till ett hashad lösenord innan det sparas i databasen.

Det här mellanprogrammet startar automatiskt när du skapar en ny användare eller uppdaterar befintlig användarinformation.


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

Nu varje gång vi sparar en användare kommer detta mellanprogram att kontrollera om lösenordet är inställt och ändrat (detta är så att vi inte har hash-lösenord för användare om det inte ändras.)


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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow