Поиск…


замечания

В мангусте Middlewares также называются pre и post hooks.

Существует два типа промежуточного программного обеспечения

Оба этих промежуточного программного обеспечения поддерживают pre и post hooks.

  1. Средство промежуточного документа

    Поддерживается для функций документа init , validate , save и remove

  1. Запросить промежуточное ПО

    Поддерживается функция запросов count , find , findOne , findOneAndRemove , findOneAndUpdate , insertMany и update .


Предварительные и пост-крючки

Существует два типа Pre hooks

  1. последовательный

    Как следует из названия, оно выполняется в последовательном порядке i ... один за другим

  1. параллельно

    Параллельный промежуточный слой обеспечивает более мелкозернистое управление потоком и hooked method не выполняется до тех пор , done вызываются всеми параллельными ИМ.

Post Middleware выполняются после hooked method и все его pre промежуточное программное обеспечение завершено.


hooked методы - это функции, поддерживаемые промежуточным программным обеспечением документа. init, validate, save, remove

Middleware для пароля пользователя hash перед сохранением

Это пример Document Middleware программного обеспечения Serial Document Middleware

В этом примере мы напишем промежуточное программное обеспечение, которое преобразует пароль обычного текста в хешированный пароль, прежде чем сохранять его в базе данных.

Это промежуточное программное обеспечение автоматически срабатывает при создании нового пользователя или обновлении существующих данных пользователя.


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

Теперь каждый раз , когда мы экономим пользователь, Это промежуточное ПО будет проверять , если пароль установлен и изменен (это так мы не хэш - пароль пользователя , если его не изменяются.)


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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow