Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment créer un TRIGGER dans SEQUELIZE (nodeJS) ?

Vous pouvez le faire de deux manières. Comme vous l'avez noté, vous pouvez créer un déclencheur dans la base de données elle-même. Vous pouvez exécuter une requête de séquençage brute pour accomplir ceci :

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

Ou, vous pouvez créer un hook sur le modèle utilisateur qui effectue une action sur un afterCreate événement :

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;
};