You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 06:32:09