如何在 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
}
}
到目前为止,我还没有找到任何官方发布的信息。
我创建了这个辅助函数,它可以展平对象,并且还应该保留关系对象。
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
函数应返回扁平响应。