mongoose
Mangoest Middleware
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.
Middleware voor documenten
Het wordt ondersteund voor documentfuncties
init,validate,saveenremove
Vraag middleware
Het wordt ondersteund voor
findOnecount,find,findOne,findOneAndRemove,findOneAndUpdate,insertManyenupdate.
Pre en Post haken
Er zijn twee soorten Pre haken
serie-
Zoals de naam al doet vermoeden, wordt het in seriële volgorde uitgevoerd, het ene na het andere
parallel
Parallel middleware biedt meer fijnkorrelig flow control en de
hooked methodwordt niet uitgevoerd totdatdonewordt 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` );
}
);