“空的”;节点";从graphql响应返回的对象

“空的”;节点";从graphql响应返回的对象,graphql,github-graphql,Graphql,Github Graphql,我刚刚开始学习graphql,创建了一个查询,返回前10个已解决问题的列表以及一些属性。令我惊讶的是,我得到的JSON中的响应对象有时是空的,有时是非空的。回答是随机的。我也和邮递员一起测试过。因为我使用jackson将json响应映射到Java类并执行一些操作,所以在处理空对象时会抛出异常 1) 基本上,我想要一个非空对象的封闭问题。询问中有什么错误吗?如果是,有人能说出正确的查询吗 2) 另外,我想知道返回空节点对象背后的逻辑 使用的查询 { search(first: 20, typ

我刚刚开始学习graphql,创建了一个查询,返回前10个已解决问题的列表以及一些属性。令我惊讶的是,我得到的JSON中的响应对象有时是空的,有时是非空的。回答是随机的。我也和邮递员一起测试过。因为我使用jackson将json响应映射到Java类并执行一些操作,所以在处理空对象时会抛出异常

1) 基本上,我想要一个非空对象的封闭问题。询问中有什么错误吗?如果是,有人能说出正确的查询吗

2) 另外,我想知道返回空节点对象背后的逻辑

使用的查询


{
  search(first: 20, type: ISSUE, query: "created:<2019-09-21 state:closed") {
    issueCount
    edges {
      node {
        ... on Issue {
          createdAt
          closedAt
          title
          url
          repository {
            name
          }
        }
      }
    }
  }
}
答复2

{
    "data": {
        "search": {
            "issueCount": 92339271,
            "edges": [
                {
                    "node": {}
                },
                {
                    "node": {}
                },
                {
                    "node": {}
                },
                {
                    "node": {}
                },
                {
                    "node": {}
                },
                {
                    "node": {}
                },
                {
                    "node": {}
                },
                {
                    "node": {}
                },
                {
                    "node": {}
                },
                {
                    "node": {}
                },
                {
                    "node": {}
                },
                {
                    "node": {}
                },
                {
                    "node": {}
                },
                {
                    "node": {
                        "createdAt": "2019-09-20T23:58:36Z",
                        "closedAt": "2019-09-21T00:57:54Z",
                        "title": "Breaks Some Links on Firefox for Mac",
                        "url": "https://github.com/duckduckgo/duckduckgo-privacy-extension/issues/416",
                        "repository": {
                            "name": "duckduckgo-privacy-extension"
                        }
                    }
                },
                {
                    "node": {}
                },
                {
                    "node": {}
                },
                {
                    "node": {}
                },
                {
                    "node": {}
                },
                {
                    "node": {}
                },
                {
                    "node": {}
                }
            ]
        }
    }
}

节点
字段的类型是
SearchResultItem
,这是一个。接口是一种抽象类型,表示实现该接口的一个或多个对象类型。换句话说,搜索结果中任何特定的
节点
字段的类型可以是几种类型之一--
问题
PullRequest
存储库
,等等

当查询抽象类型(接口或联合)时,我们必须使用,以便为每个可能的类型指定要获取的字段。因此,对于搜索,我们写道:

... on Issue {
  # some fields here
}
... on PullRequest {
  # some other fields here
}
... on Repository {
  # yet some other fields here
}
等等。内联片段只告诉GraphQL对于给定类型返回哪些字段它们不会过滤搜索的实际结果。您不必为每种可能的类型提供内联片段,但是如果您不提供内联片段,并且该类型在结果中返回,它将作为空对象返回(同样,因为您没有告诉GraphQL您需要该特定类型的哪些字段)


GraphQL不提供任何用于过滤、排序或其他操作返回数据的内置方法。如果需要,由单个服务实现该功能。在这种特殊情况下,即使在
搜索
字段上有一个
类型
参数,将该参数的值设置为
问题
实际上仍然会返回两种不同的类型--
问题
PullRequest
。因此,如果希望避免为某些搜索结果接收空对象,则仍需要另一个用于
PullRequest
的内联片段。

节点字段的类型为
SearchResultItem
,这是一个。接口是一种抽象类型,表示实现该接口的一个或多个对象类型。换句话说,搜索结果中任何特定的
节点
字段的类型可以是几种类型之一--
问题
PullRequest
存储库
,等等

当查询抽象类型(接口或联合)时,我们必须使用,以便为每个可能的类型指定要获取的字段。因此,对于搜索,我们写道:

... on Issue {
  # some fields here
}
... on PullRequest {
  # some other fields here
}
... on Repository {
  # yet some other fields here
}
等等。内联片段只告诉GraphQL对于给定类型返回哪些字段它们不会过滤搜索的实际结果。您不必为每种可能的类型提供内联片段,但是如果您不提供内联片段,并且该类型在结果中返回,它将作为空对象返回(同样,因为您没有告诉GraphQL您需要该特定类型的哪些字段)


GraphQL不提供任何用于过滤、排序或其他操作返回数据的内置方法。如果需要,由单个服务实现该功能。在这种特殊情况下,即使在
搜索
字段上有一个
类型
参数,将该参数的值设置为
问题
实际上仍然会返回两种不同的类型--
问题
PullRequest
。因此,如果您希望避免为某些搜索结果接收到空对象,您仍然需要另一个内联片段作为
PullRequest

但是我使用了。。。关于问题{…}对吗?这仍然是个问题吗?你能发布一些示例查询结构吗?我添加了块,我的问题解决了。。。在PullRequest上{#这里有一些其他字段}但我使用了。。。关于问题{…}对吗?这仍然是个问题吗?你能发布一些示例查询结构吗?我添加了块,我的问题解决了。。。关于PullRequest{#此处的一些其他字段}