How to get join data result without prefix table name in Sequelize ORM How to get join data result without prefix table name in Sequelize ORM express express

How to get join data result without prefix table name in Sequelize ORM


This should work,

db.admin.findAll({     attributes: ['id', 'username', 'email', 'status', 'role.role_id', 'role.role_name'],    include: [{       model: db.role,                            where:{status : 'Active'},       attributes: []    }],    raw: true})

I found this here


This should work

A is a table that is associated to B using a column called bId so B has a primary key of Id which is associates to a bid column in A table that is shown in the standard result set as b.id but we want these two column to be called as Id & Name

A.belongsTo(B);        return await A.findAll({            attributes: [                [Sequelize.col('b.id'), 'Id'],                [Sequelize.col('b.name'), 'Name']            ],            raw: true,            where: { /*Some condition*/ },            include: {                model: B,                attributes: [],                required: true            },        });


The top level model also can be modified to exclude and include the properties if the query still want to use along with

raw: true db.admin.findAll({     include: [{       model: db.role,                            where:{status : 'Active'},      attributes: ["role_id", "role_name"],        nested: false,      }],    attributes: {exclude: [],                 include: ["role.role_id", "role.role_name"]},    raw: true        });

additionally you can have aliases as well

 db.admin.findAll({     include: [{       model: db.role,                            where:{status : 'Active'},      attributes: [["role_id", "roleId"], ["role_name", "roleName"]]     }],    attributes: {exclude: [],                 include: ["role.roleId", "role.roleName"]},    raw: true        });