sequelize beforeCreate hook没有调用

时间:2016-03-01 13:28:18

标签: sequelize.js

我使用直接方法(sequelize docs中的方法3)定义我的beforeCreate挂钩,如下所示:

module.exports = (sequelize, datatypes)=>{
    var tag = sequelize.define(...)

    tag.beforeCreate(tag,options=>{...})

    tag.beforeBulkCreate(tags,options=>{...})
}
当我执行tag.bulkCreate时,

beforeBulkCreate被触发,但是当我执行tag.create时,却没有使用beforeCreate。那是为什么?

2 个答案:

答案 0 :(得分:2)

如果要为每行http://docs.sequelizejs.com/en/latest/api/model/#bulkcreaterecords-options-promisearrayinstance

运行创建挂钩,则应使用individualHooks: true

答案 1 :(得分:0)

我认为在定义我的模型时默认IndividualHooks是正确的,而不是假设bulkCreate的所有调用者都知道传递{individualHooks:true}。第一个响应是正确的,但我认为最好控制在模型定义中如何使用钩子而不是让调用者负责。

这就是我在模型定义中所做的。

var baseBulkCreate = User.bulkCreate;
User.bulkCreate = function(instances, options) {
    options = options || {};

    // We want to make sure that when we do things in bulk we always run the individual hooks too.  It isn't clear
    // why this isn't the default.
    options.individualHooks = true;

    return baseBulkCreate.call(this, instances, options);
};