Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como criar um TRIGGER no SEQUELIZE (nodeJS)?


Você pode fazer isso de duas maneiras. Como você observou, você pode criar um gatilho no próprio banco de dados. Você pode executar uma consulta de sequelize bruta para fazer isso:
sequelize.query('CREATE TRIGGER create_config AFTER INSERT ON users' +
  ' FOR EACH ROW' +
  ' BEGIN' +
  ' insert into configs (UserId) values(new.id);' +
  'END;')

Ou você pode criar um gancho no modelo de usuário que executa uma ação em um afterCreate evento:
module.exports = function(sequelize, DataTypes) {    
  var User = sequelize.define('User', {
    name        : DataTypes.STRING(255),
    email       : DataTypes.STRING(255),
    username    : DataTypes.STRING(45),
    password    : DataTypes.STRING(100),
  }, {
    classMethods : {
      associate : function(models) {
        User.hasOne(models.Config)
      }
    },
    hooks: {
      afterCreate: function(user, options) {
        models.Config.create({
          UserId: user.id
        })
      }
    }
  });
  return User;
};