我正在尝试使用Stradi构建用于费用记录的api。 我有旅行,每次旅行都有很多费用。 (一对多的关系)。 我想,当我去/ trips时,它还会给我该次旅行的所有费用之和。 (每笔费用都有适当的金额) 我只需要在响应而不是在api的模型上的sumField(所以我不能修改它)。 我正在使用postrgres。 Definetelly我必须修改找到并找到一个控制器,但是我不知道如何求和。
如果有可能从graphql进行查询。 有帮助吗?
答案 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)
谢谢,我会尽力的。如果费用是一个关系字段怎么办?出差会花很多钱。