Sequelize Hooks - funcs在关联中公开模型吗?

时间:2016-01-15 08:25:37

标签: triggers hook sequelize.js

创建hook时,我想知道models变量是否在函数中公开,如同在分析中一样:

...
classMethods: {
    associate: function ( models ) {
        users.belongsTo( models.roles, { foreignKey: 'role' } );
    }
}
...

我想要做的是更新另一个模型的值,首先我必须更新当前添加购买金额的产品数量(任何提示?),因此,我需要models变种

hooks : {
    afterCreate: function ( inventory, options ) {
        //What does the `options` value has?
    }
} 

建议的一个解决方法是简单地要求模型...... 另外,我想知道afterCreate是否适用于bulkCreate?或者必须是afterBulkCreate吗?

2 个答案:

答案 0 :(得分:0)

每次创建后触发afterCreate。在创建整个集合后触发afterBulkCreate。因此,如果要创建10个项目,则在创建每个项目后,将调用afterCreate 10次。但是,只有布尔克雷特才会被召唤一次。

这似乎没有足够的文档记录,但我建议只是创建一个钩子,然后在钩子内部执行console.log(参数),看看哪些参数正在传入。但我建议只是需要像你说的模型。

答案 1 :(得分:0)

models变量未在函数中公开。我需要更新另一个模型的值时找到的解决方案如下:

定义一个函数来获取接收模型的钩子:

var getHooks = function(models) {
    return {
        afterCreate: function(item, options) {
            // Can access the models:
            models.roles.create({...});
        },
        beforeCreate: function(item, options) {
            // Code here
        }
    };
};

并在associate方法中设置钩子函数:

classMethods: {
    associate: function ( models ) {
        users.belongsTo( models.roles, { foreignKey: 'role' } );

        var hooks = getHooks(models);
        for(var name in hooks) {
            users.addHook(name, hooks[name]);
        }
    }
}