Просто переверните логику.
const productCategories = await Category.findAll({
attributes: ['id', 'name'], // or whatever attributes you want, remove this if you want all of them
where: {
productId: product_id
},
transaction
})
с другой стороны, я думаю, что вы можете удалить атрибуты продукта, продолжая использовать ваш подход:
const product_categories = await Product.findByPk(product_id,{
attributes: [], // <== no product attributes
include:[{
model:Category,
as:'categories',
}],
transaction
})