Mongoose Schema.pre insertMany Middleware

Crivella

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?

Pavlo Kostohrys

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.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel