Javascript relay/graphql:可为null的响应或捕获查询错误的方法

Javascript relay/graphql:可为null的响应或捕获查询错误的方法,javascript,graphql,relayjs,relay,graphql-js,Javascript,Graphql,Relayjs,Relay,Graphql Js,在relay/graphql中,如何表示响应可以为空的查询。现在我有一个难题,我不能用空/空响应来响应,因为中继需要id字段(可能还有graphql模式中的其他不可为空的字段),并且我不能发送错误,因为它会停止呈现我的组件 例如,假设我正在建模一个关系层次结构,并且有一个类似 getparty(partnerID:string):Person 对一些人来说,这可能是空的。所以,我要么用null Person对象响应(我认为这在relay中不太可能,因为Person可能有不可为null的字段,包括

在relay/graphql中,如何表示响应可以为空的查询。现在我有一个难题,我不能用空/空响应来响应,因为中继需要
id
字段(可能还有graphql模式中的其他不可为空的字段),并且我不能发送错误,因为它会停止呈现我的组件

例如,假设我正在建模一个关系层次结构,并且有一个类似

getparty(partnerID:string):Person

对一些人来说,这可能是空的。所以,我要么用null Person对象响应(我认为这在relay中不太可能,因为Person可能有不可为null的字段,包括globalID),要么发送一个错误。可以发送错误,但我不确定如何捕获此错误并继续渲染中继容器。我知道hot会在发生变异时出错,但查询是由中继容器处理的,无法看到接口来获取错误并继续加载组件


有没有办法在中继容器中捕获查询错误或将其传递给我的组件?

@Relay核心团队的josephsavona评论了一种方法。在

一种解决方法是使用自定义网络层来解析 RelayQueryRequest是否存在任何数据(无论错误),以及 只有在没有数据和错误时才拒绝请求

编辑:根据评论进行详细阐述

import { DefaultNetworkLayer } from 'react-relay';
export default class RelayNetworkLayer extends DefaultNetworkLayer {
  // override whichever methods (like sendMutation, sendQueries)
}

@接力核心团队的josephsavona评论了一种方法。在

一种解决方法是使用自定义网络层来解析 RelayQueryRequest是否存在任何数据(无论错误),以及 只有在没有数据和错误时才拒绝请求

编辑:根据评论进行详细阐述

import { DefaultNetworkLayer } from 'react-relay';
export default class RelayNetworkLayer extends DefaultNetworkLayer {
  // override whichever methods (like sendMutation, sendQueries)
}

你是如何解决的?你是如何解决的?你能详细说明你是如何扩展网络层的吗?你能详细说明你是如何扩展网络层的吗?