📜  清洁 facebook graphql 响应 - Javascript (1)

📅  最后修改于: 2023-12-03 14:56:08.278000             🧑  作者: Mango

清洁 Facebook GraphQL 响应 - Javascript

GraphQL是一个强大的工具,可以帮助开发人员轻松地管理和查询数据,并按需获取所需的数据。Facebook GraphQL是目前最流行且最广泛使用的GraphQL实现之一。在使用GraphQL时,很常见会遇到响应数据杂乱无章的情况。这些数据中可能夹杂着多余或者没有实际作用的信息,因此我们需要清洁这些响应,使其更容易解析和理解。

以下是一些可以使用的Javascript方法来保持Facebook GraphQL响应整洁:

1. 使用解析器

在处理GraphQL响应之前,我们需要将响应字符串解析为JSON对象。通常情况下,可以使用JSON.parse方法将响应字符串解析为JSON对象:

const jsonResponse = JSON.parse(graphQLResponse); 

解析之后,我们可以更方便地查看响应的结构并找到我们需要的数据。

2. 过滤无效信息

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对象,使代码更具可读性和可维护性。

3. 简化嵌套结构

Facebook GraphQL响应通常具有嵌套结构,这可能会使我们很难快速找到需要的数据。我们可以使用Javascript的spread(展开)操作符来展开嵌套的结构:

let { 
    node: {
        id, 
        name,
        address: {
            city, 
            country,
        },
    },
} = filteredResponse.viewer;

展开操作符使我们可以快速获取包含在嵌套对象中的数据,可读性更高。

4. 编写自定义过滤器

如果我们需要过滤掉响应中的多个属性,可以编写自己的过滤器,该过滤器将根据我们指定的条件过滤出所需的属性。例如,下面的代码过滤出响应中名称与特定值匹配的属性:

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响应的卓越方法,使用它们可以解析响应和提取所需的数据项更加容易和简单。