我与SequelizeJS定义了多对多关系,如下所示:
global.db.User.hasMany(global.db.Role, { as: 'UserRoles', joinTableName:'user_roles'});
global.db.Role.hasMany(global.db.User, { as: 'RoleUsers', joinTableName:'user_roles'});
我需要始终拥有使用用户对象检索的任何用户的角色。在为User定义模型时,是否有某种方法来定义这种类型的东西,而不仅仅是在调用find或find all时?
答案 0 :(得分:1)
也许在定义模型时你应该使用Getters & setters来自动查询到user_role
表格,如下所示:
var User = sequelize.define('User', {
name_field: { Sequelize.STRING },
age_field: { Sequelize.INTEGER },
// other fieds
userRole: {
type : Sequelize.STRING,
allowNull: false,
get : function() {
return global.db.Role.findOne({
// user_id or how it defined in Role table
where: {user_id: this.userId}
}).success(function(role) {
return role
})
}
}
});