Relay/ GraphQL:可为空的响应或捕获查询错误的方法
relay/ graphql: nullable response or a way to catch query error
在relay/graphql中,如何表达响应可以为空的查询。我现在有一个两难境地,我无法用空/空响应响应来响应,因为中继需要id
字段(以及 graphql 架构中可能的其他不可为空的字段),并且我无法发送错误,因为它停止了我的组件被渲染。
例如,假设我正在对关系层次结构进行建模,并且有一个类似
getSpouse(partnerID: string): Person
这对某些人来说可能是空的。因此,我要么使用空 Person 对象进行响应(我认为使用中继不太可行,因为 Person 可能有包括 globalID 在内的不可为空的字段),要么发送错误。发送错误是可以的,但我不确定如何捕获此错误并继续渲染中继容器。我知道在发生突变时会出错,但查询由中继容器处理,并且看不到获取错误并继续加载组件的接口。
有没有办法在 Relay 容器中捕获查询错误或将其传递给我的组件?
接力核心团队的@josephsavona评论了一种方法。https://github.com/facebook/relay/issues/487#issuecomment-232102389
一种解决方法是使用自定义网络层来解析 RelayQueryRequest 是否有任何数据(无论错误如何),以及 仅在没有数据和错误时才拒绝请求。
编辑:根据评论进行详细说明。
import { DefaultNetworkLayer } from 'react-relay';
export default class RelayNetworkLayer extends DefaultNetworkLayer {
// override whichever methods (like sendMutation, sendQueries)
}
相关文章:
- 使用查询字符串方法清除浏览器缓存
- 使用查询将对象数组发布到asp.net-mvc控制器操作的正确方法是什么
- 有没有一种方法可以修改在使用javascript的媒体功能的媒体查询下创建的样式
- 解析查询查找方法返回对象而不是数组
- *简单*解析云代码查询失败”;TypeError:无法调用方法'获取'未定义的“检索该信息”;
- 是否有一种基于“查询”来查询Neo4j中的节点的方法;dateProperty”;
- 在node.js和express中基于路径运行不同数据库查询的更好方法
- ColdFusion - 查询数据表和 CRUD 操作的方法
- j查询弹出窗口 在发布方法中提交表单
- 如何使用自定义查询方法扩展水线
- 如何在运行时在 ngResource 查询方法中设置超时
- j查询干净的方法来获取href数组并重建它
- 通过 $_GET 方法传递的查询字符串
- 在查询上解析 javascript 计数方法
- 405:不允许使用方法(AJAX 查询到 Flask)
- 用于构建用于查询的 JSON 数据的有效方法
- 节点-Postgres 查询方法不调用其回调函数
- Firebase's.once()查询方法不;Don’不要在接到电话后就不听了
- Javascript的媒体查询方法
- 获取 H2 标签内容的查询方法