渴望使用sequelizejs在模型定义上加载关联实体

时间:2013-12-17 14:16:15

标签: mysql node.js sequelize.js

我与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时?

1 个答案:

答案 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 
      })
    }
  }
});