временные метки unix в полях AtA, обновленных и удаленных - PullRequest
1 голос
/ 19 июня 2019

Я использую SequlizeJS ORM в своем приложении ExpressJS для связи с MariaDB.Я работаю с существующей схемой базы данных, поэтому я не могу изменить типы данных полей.Существующая база данных использует временные метки Unix в полях создаются, обновляются и удаляются.Теперь мне нужно следовать этому и для нового приложения ExpressJS.

В каждом модале я использую следующие перехватчики Sequelize, чтобы преобразовать поля созданного и обновленного в 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);
    }
}

, но этоявляется то, что я не могу установить в качестве метки времени в поле beforeAllkDestroy удалено.Может кто-нибудь, пожалуйста, помогите мне решить эту проблему?

Спасибо!

1 Ответ

0 голосов
/ 20 июня 2019

Одна вещь, которую нужно попробовать - опция IndividualHooks вызывает хук beforeDestroy () для каждого экземпляра.Это может быть применено на уровне запроса:

 db.myFunkyModel.destroy({
    where: { 
       'field' : { [Op.like]: '%someValue%' }
    },
    individualHooks : true
  });

или на более широком уровне:

 const sequelizeDb = new Sequelize(
    ...      
    {
      host: '127.0.0.1',
      ....
      define: {
        ....
        individualHooks : true
      }
      ....
    });

Взгляните на раздел «Модельные крючки» руководство для потенциальных хитов производительности от индивидуальных крюков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...