sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo crear un TRIGGER en SEQULIZE (nodeJS)?

Puede hacer esto de una de dos maneras. Como notó, podría crear un activador en la propia base de datos. Puede ejecutar una consulta de secuenciación sin procesar para lograr esto:

sequelize.query('CREATE TRIGGER create_config AFTER INSERT ON users' +
  ' FOR EACH ROW' +
  ' BEGIN' +
  ' insert into configs (UserId) values(new.id);' +
  'END;')

O bien, puede crear un hook en el modelo de usuario que realiza una acción en un 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;
};