Ich verwende Mungo mit NodeJs und versuche, eine Middleware zu implementieren, die bei Verwendung von insertMany aufgerufen wird. In der Mungo-Dokumentation gibt es überhaupt kein Beispiel, aber sie bestätigen, dass die Modellfunktion insertMany die folgende Middleware auslöst: insertMany ().
Ich habe ein grundlegendes Benutzerschema und benötige insertMany-Hooks, um das Passwort mit bcrypt zu hashen:
UserSchema.pre('insertMany', async function (err, docs, next) {
try{
docs.map(async function (doc, index) {
// async hash password
doc.password = await User.hashPassword(doc.password);
});
} catch (error) {
console.log(error);
}
next();
});
Ich poste nicht alle Schemas, da der Rest funktioniert, einschließlich Passwort-Hashing und "Speichern" -Hooks. Ich kann nicht verstehen, warum ich diesen Fehler erhalte, wenn ich versuche, viele Benutzer einzufügen:
next ist keine Funktion
Normalerweise rufe ich next () auf, um zur nächsten Middleware zu gelangen, aber in diesem Fall funktioniert es nicht. Wenn ich next () entferne, wird der Code nicht zur nächsten Middleware weitergeleitet, und in beiden Fällen werden Benutzer nicht eingefügt.
Kann mir jemand helfen?
Dies liegt daran, dass Sie im Rückruf falsche Argumente angeben. Hook wendet nur das Argument 'next' an. Sie müssen Ihre Rückruffunktionsargumente von (err, docs, next) in (next, docs) ändern, und es sollte für Sie funktionieren.
Details finden Sie hier https://mongoosejs.com/docs/middleware.html#pre
https://mongoosejs.com/docs/middleware.html#types-of-middleware
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen