Как создать триггер в SEQUELIZE (nodeJS)?
Im пытается создать триггер с помощью sequelize.. основная идея состоит в том, чтобы создать экземпляр CONFIG после создания пользователя.
//USER MODEL
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)
}
}
});
return User;
};
//CONFIG MODEL
module.exports = function(sequelize, DataTypes) {
var Config = sequelize.define('Config', {
notifications : DataTypes.INTEGER
}, {
classMethods : {
associate : function(models) {
Config.belongsTo(models.User)
}
}
});
return Config;
};
как вы можете видеть, " пользователь "имеет один" config", а" config "принадлежит" пользователю", поэтому после создания пользователя я хочу создать его строку конфигурации автоматически.
цель состоит в том, чтобы делать:
DELIMITER //
CREATE TRIGGER create_config AFTER INSERT ON user
FOR EACH ROW
BEGIN
insert into config (user_id) values(new.user_id);
END; //
DELIMITER ;
Теперь, что я делаю для имитации, это следующее:
.then(function(user){
return dao.Config.create(req.body, user, t);
})
как только пользователь создан, я создаю его конфигурации подобного... это работает, но это не то, что я ищу.
как я это сделаю?
спасибо!
1 ответов
Вы можете сделать это одним из двух способов. Как вы заметили, вы можете создать триггер в самой базе данных. Для этого можно запустить необработанный запрос sequelize:
sequelize.query('CREATE TRIGGER create_config AFTER INSERT ON users' +
' FOR EACH ROW' +
' BEGIN' +
' insert into configs (UserId) values(new.id);' +
'END;')
или, вы можете создать крючком в пользовательской модели, которая выполняет действие после возникновения события create:
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;
};