【发布时间】:2020-11-19 00:53:32
【问题描述】:
我正在寻找一种 Strapi API 返回键/值对的方法,该键/值对被计算并添加到服务器响应中,但不从数据库中获取:
我已经使用ApolloServer 和Prisma 完成了类似的操作。如果你想知道我是怎么做到的?然后这是我的设置:
注意:我不是在寻找
slug在 Strapi 中的功能,但总的来说,我想知道如何将动态/计算字段添加到 Strapi API 服务器响应中。
文件:./src/resolvers/Team.js
const Team = {
slug(parent) {
return parent.title.replace(/\s+/g, '-').toLowerCase();
},
};
export { Team as default };
文件:./src/resolvers/index.js
import { extractFragmentReplacements } from 'prisma-binding';
import Query from './Query';
import Mutation from './Mutation';
import Team from './Team';
const resolvers = {
Query,
Mutation,
// static
Team,
};
const fragmentReplacements = extractFragmentReplacements(resolvers);
export { resolvers, fragmentReplacements };
文件:./src/prisma.js
import { Prisma } from 'prisma-binding';
import { fragmentReplacements } from './resolvers/index';
require('dotenv').config({ path: './.env' });
const prisma = new Prisma({
typeDefs: 'src/generated/prisma.graphql',
endpoint: process.env.API_URL,
secret: process.env.PRISMA_MANAGEMENT_API_SECRET,
fragmentReplacements,
});
export { prisma as default };
文件:./src/schema.graphql
type Team {
id: ID!
title: String!
color: String!
slug: String! // this is not in Db but taken care by `./src/resolvers/StaticTeam.js`
}
正如您在上面看到的,我是如何获得slug 的,尽管它不在数据库中。我只是想将 key:val 添加到我的 API 中。
【问题讨论】:
-
您能否添加所需功能的示例?即带有发送参数和结果的端点路径/名称
-
@ghosh,这都是实验性的,我没有任何端点,但这是我需要的:
{ id: 1, title: 'My Title', color: '#fff', slug: 'my-title' // this is not in Db but sever should send data in response } -
@ghosh 正如你所建议的那样,我加入了 Slack 小组,但还没有得到任何回应:(
标签: javascript api rest graphql strapi