var User = sequelize.define('user', {
name: Sequelize.STRING,
dateOfBirth: Sequelize.DATEONLY,
email: Sequelize.STRING,
phone: Sequelize.CHAR(10)
}, {
timestamps: false,
freezeTableName: true // Model tableName will be the same as the model name
});
var Group = sequelize.define('group', {
name: Sequelize.STRING
},{
timestamps: false,
freezeTableName: true
})
var Role = sequelize.define('role', {
name: Sequelize.STRING
},{
timestamps: false,
freezeTableName: true
})
var UserXGroupXRole = sequelize.define('userXgroupXrole', {
userId: {
type: Sequelize.INTEGER,
references: "user",
referencesKey: "id",
allowNull: false
},
groupId: {
type: Sequelize.INTEGER,
references: "group",
referencesKey: "id",
allowNull: false
},
roleId: {
type: Sequelize.INTEGER,
references: "role",
referencesKey: "id",
allowNull: false
}
},{
timestamps: false,
freezeTableName: true
})
User.hasMany(UserXGroupXRole)
Group.hasMany(UserXGroupXRole)
Role.hasMany(UserXGroupXRole)
UserXGroupXRole.hasOne(User, { foreignKey: 'id' })
UserXGroupXRole.hasOne(Group, { foreignKey: 'id' })
UserXGroupXRole.hasOne(Role, { foreignKey: 'id' })
function bootstrapUser(profile){
var user = User.build();
user.name = profile.name;
user.email = profile.email;
return DefaultMembership.findAll({where: {email: profile.email}})
.then(function(memberships){
memberships.forEach(function(membership){
var ugr = UserXGroupXRole.build();
ugr.group = membership.getGroup();
ugr.role = membership.getRole();
user.addUserXGroupXRole(ugr);
})
return;
})
.then(function(){
return user.save()
})
}
Unhandled rejection TypeError: user.addUserXGroupXRole is not a function
Unhandled rejection TypeError: Cannot read property 'prototype' of undefined
Actually, I'd really like this to read addGroupRole(). Is tha possible?
Ok, I had some problems getting aliases to work. I think I read something about needing to include the alias when eager loading. Is that right?