如何忽略钩子?

时间:2013-12-20 15:44:40

标签: sequelize.js

我有以下型号:

sequelize.define("User", {
    id: {
        type: DataTypes.INTEGER(11),
        autoIncrement: true,
        primaryKey: true
    },
    email: {
        type: DataTypes.STRING(255),
        allowNull: false,
        unique: true,
    },
    password: {
        type: DataTypes.STRING(60),
        allowNull: false
    },
    role: {
        type: DataTypes.STRING(32),
        allowNull: false,
        defaultValue: 'user',
    }
},{

    instanceMethods: {
        verifyPassword: function(password,cb) {
            crypt.compare(password,this.password,cb);
        },
    },

    hooks: {
        beforeUpdate: hashPassword,
        beforeCreate: hashPassword,
    }

});

我想在忽略beforeUpdate / Create挂钩的同时创建它:

User.create({ email: 'admin@render.ly', role: 'admin', password: '############' },['email','password','role']).done(function(err,admin){ ... })

如何?

2 个答案:

答案 0 :(得分:1)

您可以这样做:

return User.findOrCreate({
    where: {email: "admin@render.ly"},
    defaults: {
        email: "admin@render.ly",
        role: "admin",
        password: "pyxBOZUNYNZCegyhthKCR9hWpgYO"
    },
    hooks: false //this will ignore hooks
})

答案 1 :(得分:0)

我开始自己使用Sequelize,这可能是一个迟到的答案,但您没有在模型定义中声明您的钩子,而是尝试使用文档中描述的.hook()方法或直接方法{ {3}},基于与您定义的角色相关联的条件? 你最终使用了什么?