I'm using Express JS and Mongo DB to build an API. I have entries in a collection to store various documents with data every day. My query pulls out data in the following format using toArray()
[
{
name: 'John',
events: '600',
created_at: '2021-01-20T14:56:42.368+00:00' // date object
},
{
name: 'Edward',
events: '900',
created_at: '2021-01-20T20:56:42.368+00:00' // date object
},
{
name: 'Jane',
events: '100',
created_at: '2021-01-19T13:56:42.368+00:00' // date object
},
{
name: 'Robert',
events: '700',
created_at: '2021-01-19T15:56:42.368+00:00' // date object
}
]
I need to get each object for the given date (grouped) and then get the newest one in that day, for example:
[
{
name: 'Edward',
events: '900',
created_at: '2021-01-20T20:56:42.368+00:00' // date object
},
{
name: 'Robert',
events: '700',
created_at: '2021-01-19T15:56:42.368+00:00' // date object
}
]
I've written a function to try this, but it's giving me the following type of format...
{
'Tue Jan 19 2021 15:56:42 GMT+0000 (Greenwich Mean Time)': [
{
name: 'Robert',
events: '700',
created_at: '2021-01-19T15:56:42.368+00:00'
}
]
}
How can I modify my function to achieve the desired results. Where am I going wrong?
function groupDataBeyondDaily (data, key = 'created_at') {
const group = data.reduce((r, a) => {
r[a.created_at] = [...r[a.created_at] || [], a]
return r
}, {})
return group;
}