Mysql
 sql >> Database >  >> RDS >> Mysql

Come creare un TRIGGER in SEQUELIZE (nodeJS)?

Puoi farlo in uno dei due modi. Come hai notato, puoi creare un trigger nel database stesso. Potresti eseguire una query di sequela grezza per ottenere questo risultato:

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

Oppure puoi creare un hook sul modello utente che esegue un'azione su 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;
};