某个字段的Strapi总和值

时间:2019-10-04 09:12:48

标签: strapi

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

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

2 个答案:

答案 0 :(得分: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;
  }
};

答案 1 :(得分:0)

谢谢,我会尽力的。如果费用是一个关系字段怎么办?出差会花很多钱。