Strapi V4.8.2:如何在GraphQL Playground中移除data与attributes字段
在Strapi v4.8.2中移除GraphQL查询里的data和attributes嵌套字段
要简化Strapi GraphQL查询结构,去掉默认的data和attributes嵌套层级,需要通过自定义GraphQL解析器与Schema实现,具体步骤如下:
步骤1:创建自定义解析器
在项目对应内容类型的目录(比如game内容类型对应src/api/game)下,新建graphql/resolvers.js文件,重写查询逻辑直接返回属性字段:module.exports = { Query: { // 列表查询 games: async (parent, args, ctx) => { const { data } = await strapi.service('api::game.game').find(args); // 提取每个项的attributes,去掉data层级 return data.map(item => item.attributes); }, // 单条查询 game: async (parent, args, ctx) => { const { data } = await strapi.service('api::game.game').findOne(args); return data.attributes; } } };步骤2:定义简化的GraphQL Schema
同样在src/api/game/graphql目录下,新建schema.graphql文件,定义去掉嵌套后的类型结构:# 定义Game类型,包含你内容类型的所有字段 type Game { id: ID! name: String description: String # 补充你的其他业务字段 } extend type Query { # 列表查询,保持分页参数兼容 games(pagination: PaginationArg): [Game] # 单条查询 game(id: ID!): Game }步骤3:重启Strapi服务
保存文件后重启Strapi服务,新的GraphQL配置即可生效。此时你就能使用简化后的查询语句,比如:query queryGames($limit: Int!, $start: Int) { games(pagination: { limit: $limit, start: $start }) { ...campos } }
注意:修改后原有嵌套结构的查询会失效,需确保所有相关GraphQL查询都更新为简化格式。
内容的提问来源于stack exchange,提问作者Daniel Silva
相关产品推荐
相关产品推荐

