2016-02-11 6 views
6

Ich habe einen beforeCreate Hook in einem Sequelize-Modell (führt bcrypt auf das Passwort in einer User Tabelle), und möchte einen Benutzer in der Seed-Datei erstellen. Funktionen wie bulkCreate fügen Sie einfach in die Datenbank ein und rufen Sie keine Haken auf (einschließlich der createdAt/updatedAt). Wie erstelle ich mit den aufgerufenen Hooks das passende Format für die Sämaschine?Wie kann ich den BeforeCreate-Hook auslösen, wenn BulkCreating in Sequelize ist?

Es scheint wie viele verwenden nur sequelize-fixtures? Ist das der Weg zu gehen? Oder ich könnte einfach das Startformat ignorieren und das Standardformat .create/.build und .save verwenden?

Auch, wo ist Dokumentation in Bezug auf Seeding gelegen? Die Google-Suchanfragen waren ziemlich leicht in Bezug auf Informationen.

Antwort

5

Stellen Sie die individualHooks Option auf true, wenn bulkCreating, wie unten:

User.bulkCreate(users, {individualHooks: true}).then(function() { 
    console.log("Done!"); 
}); 

Es gibt einige (aber wenig) Dokumentation zu dieser Option here. Wenn Sie Benutzern erlauben, Passwörter zu ändern, sollten Sie auch einen beforeUpdate Hook hinzufügen. Sie können verhindern, dass das Passwort zweimal mit bcrypt verarbeitet wird (wenn die Eigenschaften des Benutzers mit Ausnahme des Kennworts aktualisiert werden). Gehen Sie dazu wie folgt vor:

Verwandte Themen