mongoose
Mungo-Middleware
Suche…
Bemerkungen
In Mungo werden Middlewares auch genannt pre und post Haken.
Es gibt zwei Arten von Middleware
Beide Middleware unterstützen Pre- und Post- Hooks.
Dokument-Middleware
Es unterstützt die Dokumentfunktionen
init,validate,saveundremove
Abfrage Middleware
Unterstützt werden die Abfragefunktionen
count,find,findOne,findOneAndRemove,findOneAndUpdate,insertManyundupdate.
Vor- und Nachhaken
Es gibt zwei Arten von Pre- Hooks
seriell
Wie der Name schon sagt, wird Sein in serieller Reihenfolge nacheinander ausgeführt
parallel
Parallele Middleware bietet eine feinere Ablaufsteuerung und die
hooked methodwird erst ausgeführt, wenndonevon allen parallelen Middleware aufgerufen wird.
Post- Middleware wird nach der hooked method und die gesamte pre Middleware ist abgeschlossen.
Hooked-Methoden sind die von der Dokument-Middleware unterstützten Funktionen. init, validate, save, remove
Benutzer müssen vor dem Speichern von der Middleware ein Hashing durchführen
Dies ist ein Beispiel für Serial Document Middleware
In diesem Beispiel schreiben wir eine Middleware, die das Klartextpasswort in ein Hash-Passwort konvertiert, bevor es in der Datenbank gespeichert wird.
Diese Middleware wird automatisch gestartet, wenn Sie einen neuen Benutzer erstellen oder vorhandene Benutzerdaten aktualisieren.
DATEINAME: 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 );
Jedes Mal, wenn wir einen Benutzer speichern, überprüft diese Middleware, ob das Kennwort festgelegt und geändert wurde (dies bedeutet, dass wir kein Kennwort für Benutzer verwenden, wenn es nicht geändert wird.)
DATEINAME: 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` );
}
);