2013-12-17 76 views
1

我有很多一对多与SequelizeJS像这样定义的关系:渴望与sequ​​elizejs模型定义加载相关实体

global.db.User.hasMany(global.db.Role, { as: 'UserRoles', joinTableName:'user_roles'}); 
global.db.Role.hasMany(global.db.User, { as: 'RoleUsers', joinTableName:'user_roles'}); 

我需要总是有任何用户与已经获取的角色用户对象。在为用户定义模型时,是否有某种方法可以定义这类事情,而不仅仅是调用find或find all时?

回答

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 
     }) 
    } 
    } 
}); 
+0

有趣,我会尽快尝试。我目前正在做一些工作,但这绝对值得考虑。 – SirDemon