📅  最后修改于: 2023-12-03 14:56:08.278000             🧑  作者: Mango
GraphQL是一个强大的工具,可以帮助开发人员轻松地管理和查询数据,并按需获取所需的数据。Facebook GraphQL是目前最流行且最广泛使用的GraphQL实现之一。在使用GraphQL时,很常见会遇到响应数据杂乱无章的情况。这些数据中可能夹杂着多余或者没有实际作用的信息,因此我们需要清洁这些响应,使其更容易解析和理解。
以下是一些可以使用的Javascript方法来保持Facebook GraphQL响应整洁:
在处理GraphQL响应之前,我们需要将响应字符串解析为JSON对象。通常情况下,可以使用JSON.parse方法将响应字符串解析为JSON对象:
const jsonResponse = JSON.parse(graphQLResponse);
解析之后,我们可以更方便地查看响应的结构并找到我们需要的数据。
GraphQL响应通常包含很多信息,其中有些是我们不需要的。我们可以使用Javascript内置的Array过滤(filter)方法来过滤掉不必要的信息:
let responseData = jsonResponse.data; //获取data属性
let filteredResponse = Object.fromEntries(Object.entries(responseData)
.filter(([key, value]) => value !== null)); //去除值为null的属性
使用Object.fromEntries将过滤后的数组转换为一个新的JSON对象,使代码更具可读性和可维护性。
Facebook GraphQL响应通常具有嵌套结构,这可能会使我们很难快速找到需要的数据。我们可以使用Javascript的spread(展开)操作符来展开嵌套的结构:
let {
node: {
id,
name,
address: {
city,
country,
},
},
} = filteredResponse.viewer;
展开操作符使我们可以快速获取包含在嵌套对象中的数据,可读性更高。
如果我们需要过滤掉响应中的多个属性,可以编写自己的过滤器,该过滤器将根据我们指定的条件过滤出所需的属性。例如,下面的代码过滤出响应中名称与特定值匹配的属性:
function filterByName(value) {
return ([key, value]) => {
return key.indexOf('name') !== -1 && value === value;
};
}
let filteredResponse = Object.fromEntries(Object.entries(responseData)
.filter(filterByName('John Doe')));
自定义过滤器使我们可以更灵活地控制应该保留的数据,以及如何解析GraphQL响应中的数据。
以上是清洁Facebook GraphQL响应的卓越方法,使用它们可以解析响应和提取所需的数据项更加容易和简单。