某个字段的Straapi总和值

问题描述 投票:0回答:2

我正在尝试使用Stradi构建用于费用记录的api。我有旅行,每次旅行都有很多费用。 (一对多的关系)。我想,当我去/ trips时,它还会给我该次旅行的所有费用之和。 (每笔费用都有适当的金额)我只需要在响应而不是在api的模型上的sumField(所以我不能修改它)。我正在使用postrgres。Definetelly我必须修改找到并找到一个控制器,但我不知道如何求和。

此外,如果有可能从graphql进行查询。有帮助吗?

strapi
2个回答
0
投票

确实,您必须自定义API来添加新的路由和控制器(以保留当前的默认API内容),该路由和控制器将返回所需的内容。

首先,您必须在所需的API中创建路由和控制器。绊倒你。这里有一个名为hello的API的文档-用帖子替换hello。 https://strapi.io/documentation/3.0.0-beta.x/guides/controllers.html#custom-controllers

然后在您的控制器中,您将得到类似这样的内容:

const { sanitizeEntity } = require('strapi-utils');

module.exports = {
  async tripsWithSum (ctx) {
    let entities;
    if (ctx.query._q) {
      entities = await strapi.services.trip.search(ctx.query);
    } else {
      entities = await strapi.services.trip.find(ctx.query);
    }

    entities = entities.map(entity => sanitizeEntity(entity, { model: Trip }));

    entities = entities.map(entry => {
      entry = Object.assign(entry, {
        sumField: entry.expenses.length
      });
    });

    return entities;
  }
};

0
投票

谢谢,我会尽力的。如果费用是一个关系字段怎么办?旅行将有很多费用。

© www.soinside.com 2019 - 2024. All rights reserved.