gpt4 book ai didi

javascript - 继电器/graphql : nullable response or a way to catch query error

转载 作者:行者123 更新时间:2023-11-28 18:29:52 34 4
gpt4 key购买 nike

在relay/graphql中,如何表达响应可以为空的查询。我现在陷入困境,我无法使用空/空响应进行响应,因为中继需要 id 字段(可能还有 graphql 架构中的其他不可为空的字段),并且我无法发送错误,因为它停止了我的组件的渲染。

例如,假设我正在对关系层次结构进行建模,并且有一个类似的查询

getSpouse(partnerID: string): Person

这对某些人来说可能是空的。因此,我要么使用 null Person 对象进行响应(我认为这对于中继来说不太可能,因为 Person 可能具有包括全局 ID 在内的不可为 null 的字段),或者发送错误。发送错误是可以的,但我不确定如何捕获此错误并继续渲染中继容器。我知道在发生突变的情况下很容易出现错误,但查询是由中继容器处理的,无法看到获取错误并继续加载组件的接口(interface)。

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

最佳答案

中继核心团队的@josephsavona 评论了一种实现此目的的方法。在 https://github.com/facebook/relay/issues/487#issuecomment-232102389

One workaround is to use a custom network layer that resolves the RelayQueryRequest if there is any data (regardless of errors), and only rejects the request if there is no data and errors.

编辑:根据评论进行详细说明。

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

关于javascript - 继电器/graphql : nullable response or a way to catch query error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38284556/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com