我在ExpressJS应用程序中使用SequlizeJS ORM与MariaDB通信。我正在使用现有的数据库方案,因此无法更改字段的数据类型。现有数据库在createdAt,updatedAt和deleteAt字段中使用unix时间戳。现在,对于新的ExpressJS应用程序,我也需要遵循它。
在每个模式中,我都使用以下Sequelize挂钩来将createdAt和updatedAt字段转换为unix时间戳。
hooks: {
beforeCreate: (instance, options) => {
instance.dataValues.createdAt = Math.floor(Date.now() / 1000);
instance.dataValues.updatedAt = Math.floor(Date.now() / 1000);
},
beforeUpdate: (instance, options) => {
instance.dataValues.updatedAt = Math.floor(Date.now() / 1000);
}
}
但是问题是我不能将DeletedAt设置为beforeBulkDestroy挂钩上的时间戳。谁能帮我解决这个问题?
谢谢!
答案 0 :(得分:0)
要尝试的一件事-individualHooks选项为每个实例调用beforeDestroy()挂钩。这可以在查询级别应用:
db.myFunkyModel.destroy({
where: {
'field' : { [Op.like]: '%someValue%' }
},
individualHooks : true
});
或更广泛地说:
const sequelizeDb = new Sequelize(
...
{
host: '127.0.0.1',
....
define: {
....
individualHooks : true
}
....
});
请查看the manual的“模型挂钩”部分,了解来自单个挂钩的潜在性能影响。