创造时间,更新时间和删除时间字段中的Unix时间戳

时间:2019-06-19 17:51:34

标签: javascript node.js express sequelize.js

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

谢谢!

1 个答案:

答案 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的“模型挂钩”部分,了解来自单个挂钩的潜在性能影响。