How to load attributes without nested object from associated models in sequelize nodejs

824 views Asked by At

how to return a user object array without any nested object in the array elements? one user has one role and one role belongs to many users(one to many releation between user and role) I need to execute this query

SELECT users.first_name, users.last_name,users.email,users.status,roles.role
FROM webuser users 
JOIN webuserrole roles ON roles .id= users.role_id;

this is sequlize function let user =await webuser.findAll({

            attributes: [
                'first_name',
                'last_name',
                'email',
                'status',
                 ],
            include : [{ model: webuserrole, attributes: ["role"]}]

        });

this is the result of the above function return user array object

[
    {
        "first_name": "jack",
        "last_name": "leach",
        "email": "[email protected]",
        "status": true,
        "webuserrole": {
            "role": "admin"
        }
    },
    {
        "first_name": "ben",
        "last_name": "duck",
        "email": "[email protected]",
        "status": false,
        "webuserrole": {
            "role": "admin"
        }
    }
];

This is I expect the result

[
    {
        "first_name": "jack",
        "last_name": "leach",
        "email": "[email protected]",
        "status": true,
        "role": "admin"
       
    },
    {
        "first_name": "ben",
        "last_name": "duck",
        "email": "[email protected]",
        "status": false,
        "role": "admin"
       
    }
]
1

There are 1 answers

0
Nayan On
            attributes: [
                'first_name',
                'last_name',
                'email',
                'status',
                [Sequelize.literal('webuserrole.role'), 'role']
            ],
            include : [{ model: webuserrole, as: 'webuserrole', attributes: []}]

        });