Strapi v4 嵌套数据过多

6

我正在将Strapi v3的查询重写为v4(GraphQL),由于新增了"data"和"attributes"字段,我在处理嵌套对象时遇到了问题。以下是"data"字段的示例:

user {
  data {
    id
    attributes {
      company {
        data {
          id
          attributes {
            location {
              data {
                id
                ...
              }
          }
      }
    
    }
  }
}

在文档中是否有缺失的内容,是否有避免这么多嵌套的方法,我应该重新组织模型中的数据吗?

6个回答

2

有人有好的解决方法吗? - Jake
1
到目前为止,我最好的解决方案就是尝试将东西分解成许多组件,并在传递到组件时扁平化数据。例如:{records.data.map(({ id, attributes }) => ( ))} - Jake

1

我的朋友,现在的方式是这样的:

user.data.attributes.company.data.attributes.location.data 

0
为解决这个问题,你可以安装strapi-plugin-transformer,并传递所需的配置以从响应中移除dataattributes

0

解决此问题的新软件包为strapi-flatten-graphql

这将消除dataattributes

请查看软件包文档以获取更多详细信息


0

0
您可以使用strapi-flatten-graphql库(我是作者)简化Strapi v4 GraphQL查询中的深层嵌套结构。这个轻量级的TypeScript库提供了用于扁平化嵌套GraphQL响应的函数,使其更加简洁和易于使用。
要开始,请使用npm安装该库:
npm install strapi-flatten-graphql

从库中导入必要的函数:

import { flattenEntityResponse } from 'strapi-flatten-graphql';

然后,使用flattenEntityResponse函数来展开你的GraphQL响应:
const response = /* Your GraphQL response object */;
const flattenedResponse = flattenEntityResponse(response);

// Use the flattened response in your application
console.log(flattenedResponse);
flattenEntityResponse 函数负责将嵌套结构转换为更简单、扁平化的格式。它还包含 TypeScript 类型定义,以确保在处理扁平化数据时的类型安全性。
通过使用 strapi-flatten-graphql,您可以简化 Strapi v4 GraphQL 查询,并提高代码的可读性和可维护性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接