Nested or Chained Getters with associated models?

230 views
Skip to first unread message

Ramin Razi

unread,
May 13, 2014, 1:56:56 PM5/13/14
to sequ...@googlegroups.com
Is it possible todo a chained or nested get, along with specifying how you want your return object to be formated.

I am looking to get back an array of only permission names..
ex: {'Read','Write','Reports'}


var Permission = sequelize.define('Permission',
 
{
 name
: DataTypes.STRING,
 desc
: DataTypes.STRING
 
}
 
var Role = sequelize.define('Role',
 
{
 name
: DataTypes.STRING,
 desc
: DataTypes.STRING
 
};
 
var User = sequelize.define('User',
 
{
 name
: DataTypes.STRING,
 email
: DataTypes.STRING
 
};
 
Permission.hasMany(Role);
Role.hasMany(Permission);

User.hasMany(Role);
Role.hasMany(User);

user
.getRoles().getPermissions().success(function(permissions){
 console
.log(permissions);
});


Mick Hansen

unread,
May 13, 2014, 2:19:10 PM5/13/14
to Ramin Razi, sequ...@googlegroups.com
Not like that. But tall you really need is an include and some post processing.
--
Mick Hansen
@mhansendev

Ramin Razi

unread,
May 13, 2014, 2:28:26 PM5/13/14
to sequ...@googlegroups.com, Ramin Razi
ok cool, what would be the best way of getting attributes that are 4 levels deep?
User -> UserRoles -> Roles -> RolePermissions -> Permissions.name
without having to perform a new query for each step?

Ramin Razi

unread,
May 13, 2014, 3:47:30 PM5/13/14
to sequ...@googlegroups.com, Ramin Razi
Got it! Thanks for you help incase anyone wants to know how.


                 db.User.findAll({where:{id:2},include:[{model:db.Role,include:   [{model:db.Permission}]}]}).success(function(usr){
                      usr
[0].dataValues.roles.forEach(function(role){
                        role
.dataValues.permissions.forEach(function(per){
                          permissions
.push(per.dataValues.name);
                       
});
                     
});
                 console
.log(permissions);

Mick Hansen

unread,
May 13, 2014, 3:57:21 PM5/13/14
to Ramin Razi, sequ...@googlegroups.com
Super.
Although i suggest you use usr[0].get('roles').forEach - dataValues i an internal that might change
--
Mick Hansen
@mhansendev

Ramin Razi

unread,
May 13, 2014, 4:10:31 PM5/13/14
to sequ...@googlegroups.com, Ramin Razi
Perfect I was looking for an alternative to dataValues. Thanks again for your help.
Reply all
Reply to author
Forward
0 new messages