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