在relay / graphql中,如何表达响应可以为空的查询。我现在有一个困境,我无法响应空/ null响应,因为继电器需要id
字段(并且可能是graphql架构中的其他非可空字段),我不能发送错误,因为它停止我的组件被渲染。
例如,假设我正在建立一个关系层次结构,并且有一个类似
的查询 getSpouse(partnerID: string): Person
对某些人来说这可能是空的。所以,我要么使用null Person对象进行响应(我认为继电器不太可能,因为Person可能有非可空字段,包括globalID),或者发送错误。可以发送错误,但我不知道如何捕获此错误并继续渲染中继容器。我知道在发生突变的情况下会出现错误,但查询是由中继容器处理的,并且无法看到接口以获取错误并继续加载组件。
有没有办法在Relay容器中捕获查询错误或将其传递给我的组件?
答案 0 :(得分:3)
一种解决方法是使用可解析的自定义网络层 如果有任何数据(无论错误),RelayQueryRequest,和 如果没有数据和错误,则仅拒绝请求。
编辑:根据评论进行详细说明。
import { DefaultNetworkLayer } from 'react-relay';
export default class RelayNetworkLayer extends DefaultNetworkLayer {
// override whichever methods (like sendMutation, sendQueries)
}