Sequelize - beforeCreate没有被调用

时间:2017-10-11 21:10:31

标签: node.js sequelize.js

我正在尝试使用nodejs中的sequelize创建一个用户模型,但似乎我的beforeCreate实际上并没有被调用。我已经查看了互联网上的文档和多个示例,但我无法使其正常运行。

型号代码如下:

"use strict";
const bcrypt = require('bcrypt');
require('dotenv').config()

module.exports = function(sequelize, DataTypes) {
    var User = sequelize.define("User", {
        username: {
            type: DataTypes.STRING,
            unique: true,
            allowNull: false
        },
        password: {
            type: DataTypes.STRING,
            allowNull: false
        },
        emailAddress: {
            type: DataTypes.STRING,
            unique: true,
            allowNull: false
        },
        lastLogin: {
            type: DataTypes.DATE,
            allowNull: true
        }
    });

    function cryptPassword(password, callback) {
        bcrypt.genSalt(process.env.SALT_ROUNDS, function(err, salt) {
            if (err)
                return callback(err);

            bcrypt.hash(password, salt, function(err, hash) {
                return callback(err, hash);
            });
        });
    };

    User.beforeCreate(function(model, options) {
        cryptPassword(model.password, function(err, hash) {

            model.password = hash;
        });
    });

    return User;
}; 

1 个答案:

答案 0 :(得分:0)

您应该在模型内部定义钩子

var User = sequelize.define("User", {
    username: ...
}, {
    hooks: {
        beforeCreate: function(){...}
    }
});