My supabase query with nuxt3:
const client = useSupabaseClient()
const { data: expenses } = await useAsyncData('count', async () => {
const { data, count } = await client.from<Expenses>('expenses').select('amount, currency', { count: 'exact' })
return { data, count }
})
console.log('useAsyncData :', expenses.value)
This is my result:
I want to sum of amount and group by currency
Result I want:
const result = { 0: 33800, 1: 10 }
You can use the transform property of useAsyncData to manipulate the result of the operation. The code (surely could be improved):
const { data: expenses } = await useAsyncData("count", async () => {
const { data } = await ...
return data;
}, {
transform: (data) => {
const result = {};
const groups = data.reduce((acc, d) => {
const found = acc.find((a) => a.currency === d.currency);
const value = { amount: d.amount };
if (!found) {
acc.push({ currency: d.currency, data: [value] });
} else {
found.data.push(value);
}
return acc;
}, []);
groups.forEach((group) => {
result[group.currency] = group.data.map(i => i.amount).reduce((a, b) => a + b);
});
return result;
}
});
Will return
{
"0": 33800,
"1": 10
}