I have an endpoint that joins the user
and user_emails
table as a one-to-many relationship (postgresql). It look as follows.
router.get('/', function (req, res, next) {
db.select('users.id', 'users.name', 'user_emails.address')
.from('users')
.leftJoin('user_emails', 'users.id', 'user_emails.user_id')
.then(users => res.status(200).json(users))
.catch(next) // go to error handler
});
However, this will return a new document for each email address. What I want is an array of documents that looks as follows:
[{
id: 1,
name: 'Steve',
emails: [
{ address: 'hello@world.org' },
{ address: 'meow@meow.org' }
]
}, {
id: 2,
name: 'Jimmy',
emails: [
{ address: 'jimmy@jimbo.org' }
]
}]
How should this be done in knex?