Sequelize create model with beforeCreate hook

前端 未结 2 1174
孤街浪徒
孤街浪徒 2020-12-09 09:10

I defined my hook beforeCreate as following:

module.exports = function (sequelize, DataTypes) {
  var userSchema = sequelize.define(\'User\', {
  // define..         


        
相关标签:
2条回答
  • 2020-12-09 09:48

    For newer versions of Sequelize, the hooks no longer have callback functions but promisses. Therefor the code would look more like the following:

    userSchema.beforeCreate(function(model, options) {
        debug('Info: ' + 'Storing the password');
    
        return new Promise ((resolve, reject) => {
            model.generateHash(model.password, function(err, encrypted) {
                if (err) return reject(err);
                debug('Info: ' + 'getting ' + encrypted);
    
                model.password = encrypted;
                debug('Info: ' + 'password now is: ' + model.password);
                return resolve(model, options);
            });
        });
    });
    
    0 讨论(0)
  • 2020-12-09 09:59

    Hooks are called in an asynchronous fashion in Sequelize, so you need to call the completion callback when you're done:

    userSchema.beforeCreate(function(model, options, cb) {
      debug('Info: ' + 'Storing the password');    
      model.generateHash(model.password, function(err, encrypted) {
        if (err) return cb(err);
        debug('Info: ' + 'getting ' + encrypted);
    
        model.password = encrypted;
        debug('Info: ' + 'password now is: ' + model.password);
        return cb(null, options);
      });
    });
    

    (alternatively, you can return a promise from the hook)

    0 讨论(0)
提交回复
热议问题