Pre-save-hook und Instanz-Methoden in Sequelize?
Gibt es pre-save-hooks und Instanz-Methoden in Sequelize.js?
Speziell ich brauche zu konvertieren, das Mungo-code in eine entsprechende Sequelize code:
Schema
var userSchema = new mongoose.Schema({
username: { type: String, unique: true },
email: { type: String, unique: true },
password: String,
token: String
});
Pre-save
userSchema.pre('save', function(next) {
var user = this;
var hashContent = user.username + user.password + Date.now() + Math.random();
user.token = crypto.createHash('sha1').update(hashContent).digest('hex');
if (!user.isModified('password')) return next();
bcrypt.genSalt(5, function(err, salt) {
if (err) return next(err);
bcrypt.hash(user.password, salt, function(err, hash) {
if (err) return next(err);
user.password = hash;
next();
});
});
});
Instanz-Methode
userSchema.methods.comparePassword = function(candidatePassword, cb) {
bcrypt.compare(candidatePassword, this.password, function(err, isMatch) {
if(err) return cb(err);
cb(null, isMatch);
});
};
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist der beste Weg, erweitern Sie Ihr Modell mit Klasse oder Instanz-Methoden:
Also, wenn Sie
So, um die token, du kannst es so machen:
Oder comparePassword Funktion:
Können Sie dies in der Sequelize docs
Bearbeiten
Auf neuere Versionen von gibt es Haken für jedes Modell, können Sie die Haken-Dokumentation, die sind sehr hübsch, unkompliziert und ergänzen Sie mit dem Klassen-oder Instanz-Methoden.
Stand ich vor demselben Problem, aber mindestens in der version 2.0 von sequelize diese Funktion ist verfügbar, die vollständige Dokumentation ist erhältlich bei Haken.
Unten ist ein Beispiel code, der verwendet ein beforeValidate Haken:
Die Anforderung hier war, erstellen Sie eine hash mit smsBody und Benutzer-id, so habe ich den Haken also beforeValidate, dieser hook wird ausgeführt, bevor irgendwelche Validierungen werden durchgeführt von Sequelize auf das Modell. Es gibt viele andere hooks zur Verfügung und der beste Teil ist, Sie müssen nicht zu schreiben, jeder zusätzliche code, während Sie Ihre Daten speichern, diese Haken wird sich darum kümmern.
Sollten Sie mit bedacht wählen zwischen Haken und instanceMethods. Aber in deinem Fall denke ich Haken wäre eine bessere Wahl
Was Sie suchen, im sequilize Welt ist beforeCreate Haken. Es würde gehen, so etwas wie dieses: