【问题标题】:unix timestamps in createdAt, updatedAt & deletedAt fieldscreatedAt、updatedAt 和 deletedAt 字段中的 unix 时间戳
【发布时间】:2019-06-19 17:51:34
【问题描述】:

我在我的 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 钩子上的时间戳。谁能帮我解决这个问题?

谢谢!

【问题讨论】:

  • beforeBulkDestroy() 有什么问题?是否有错误消息,或者它只是没有按预期工作?
  • beforeBulkDestroy() 只接受选项,不能修改实例..还是我错过了什么?

标签: javascript node.js express sequelize.js


【解决方案1】:

要尝试的一件事 - 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 的 Model Hooks 部分,了解单个 Hooks 的潜在性能影响。

【讨论】:

  • 我尝试使用 individualHooks,但没有解决问题。仍然无法处理 deletedAt 字段上的 unix 时间戳。
  • 奇怪 - 我的测试工作正常。您的个人钩子是否正在执行?您可以使用如下的日志消息进行测试。 hooks: { beforeDestroy: (instance, options) => { console.log('*** beforeDestroy *** ',instance.dataValues); instance.dataValues.deletededAt = Math.floor(Date.now() / 1000); }, ....
  • 请问您可以查看以下屏幕截图吗?它给了我与过去相同的错误。 imgur.com/a/EI4bBlE
  • 看起来 deletedAt 日期是由 Sequelize 设置的,而不是你的钩子。这看起来很奇怪,因为您能够将其挂钩以进行创建和更新。可能timestamps: true, paranoid: true,的软删除不能上钩?不幸的是,我现在能想到的唯一解决方案是手动编码软删除......这有点难看。
  • 是的。我也在考虑同样的事情。也许做一个原始查询,但它很难看。 :(
猜你喜欢
  • 2022-12-02
  • 2018-10-08
  • 1970-01-01
  • 2020-07-11
  • 1970-01-01
  • 1970-01-01
  • 2019-10-14
  • 1970-01-01
  • 2020-10-08
相关资源
最近更新 更多