【问题标题】:Supabase Sum Amount specific fieldSupabase Sum Amount 特定字段
【发布时间】:2022-07-12 22:23:49
【问题描述】:

我使用 nuxt3 的 supabase 查询:

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)

这是我的结果:

我想按货币汇总金额和分组

我想要的结果:

const 结果 = { 0: 33800, 1: 10 }

【问题讨论】:

标签: javascript supabase nuxtjs3


【解决方案1】:

您可以使用useAsyncDatatransform 属性来操作操作的结果。代码(肯定可以改进):

    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.push({
                    currency: group.currency,
                    amount: group.data.map((g) => g.amount).reduce((a, b) => a + b)
                });
            });

            return result;
        }
    });

会回来

[
  {
    "currency": 0,
    "amount": 33800
  },
  {
    "currency": 1,
    "amount": 10
  }
]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多