Strapi V4 - 如何从 Playground 中的 GraphQL 查询中删除数据和属性字段?

问题描述 投票:0回答:1

如何在 Playground 中使用 Strapi v4.8.2 从 GraphQL 查询中删除数据和属性字段?

示例德:

之前:

query queryGames($limit: Int!, $start: Int) {
 games(pagination: { limit: $limit, start: $start }) {
  data {
   attributes {
    ...campos
   }
  }
 }
}

之后:

query queryGames($limit: Int!, $start: Int) {
 games(pagination: { limit: $limit, start: $start }) {
  ...campos
 }
}
graphql strapi
1个回答
0
投票

到目前为止,我还没有找到任何官方发布的信息。

我创建了这个辅助函数,它可以展平对象,并且还应该保留关系对象。

const flattenObject = (obj: { [key: string]: string }) => {
  let flattened: { [key: string]: string | Object } = {};

  Object.keys(obj).forEach((key) => {
    const value = obj[key];
    if (
      typeof value === "object" &&
      !obj.hasOwnProperty("attributes") &&
      !obj.hasOwnProperty("data")
    ) {
      flattened[key] = flattenObject(value);
    } else if (typeof value === "object" && value !== null && !Array.isArray(value)) {
      flattened = { ...flattenObject(value) };
    } else {
      flattened[key] = value;
    }
  });

  return flattened;
};

这就是我使用它的方式:

const mapResponse = (data = {}, key) => {
  const formattedData = data?.[key]?.data?.map((item) => {
    const tempItem = flattenObject(item);
    return tempItem;
  });

  return formattedData;
};

最后

mapResponse
函数应返回扁平响应。

© www.soinside.com 2019 - 2024. All rights reserved.