javascript - createdAt、updatedAt 和 deletedAt 字段中的 unix 时间戳
问题描述
我在我的 ExpressJS 应用程序中使用 SequlizeJS ORM 与 MariaDB 进行通信。我正在使用现有的数据库方案,因此无法更改字段的数据类型。现有数据库在 createdAt、updatedAt 和 deletedAt 字段中使用 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 钩子上的时间戳。谁能帮我解决这个问题?
谢谢 !
解决方案
要尝试的一件事 - individualHooks 选项为每个实例调用 beforeDestroy() 钩子。这可以在查询级别应用:
db.myFunkyModel.destroy({
where: {
'field' : { [Op.like]: '%someValue%' }
},
individualHooks : true
});
或者在更广泛的层面上:
const sequelizeDb = new Sequelize(
...
{
host: '127.0.0.1',
....
define: {
....
individualHooks : true
}
....
});
查看手册的 Model Hooks 部分,了解单个Hooks 的潜在性能影响。
推荐阅读
- tensorflow - 为什么我不能适应这个 tensorflow lstm 模型?
- android - 在 Android YouTube Player API 中为高级订阅者移除广告
- stata - 混合后如何得到所有对比结果?
- android - 究竟什么情况下静默登录会失败?
- amazon-web-services - 这些 AWS 存储桶策略权限如何工作?
- r - 正则表达式从数据框中提取链接并保存为字符串
- makefile - g ++编译时无法识别的调试输出级别'db'错误
- amazon-web-services - 如何在 terraform 的“subnet_mapping”中使用“for_each”,以便将创建的每个弹性 IP 映射到每个“subnet_id”
- amazon-s3 - 使用 AWS 胶水,它最终成为表中的插入而不是更新
- python - 错误:由于 pip install -r requirements.txt 中的 EnvironmentError 无法安装软件包