Apollo gql:当一个有效而一个失败时,我如何处理捆绑查询?
Posted
技术标签:
【中文标题】Apollo gql:当一个有效而一个失败时,我如何处理捆绑查询?【英文标题】:Apollo gql : How do I handle bundled queries when one works and one fails? 【发布时间】:2021-05-28 08:08:46 【问题描述】:我们正在使用 Apollo Angular Client 来调用 Apollo Server。 我将两个查询组合在一起。其中一个失败了。
在服务器端,其中一个解析器抛出错误。
throw new UserInputError("ERR_MSG", "message":"addtional info")
当其中一个调用失败时,我应该如何处理客户端的响应?我想使用来自一个查询的数据 并为失败的数据显示错误消息。
this.apollo.watchQuery(
query: gql(query),
variables: a: 'a'
).valueChanges.subscribe(
(response) =>
let a = resp.data?.Query1;
let b = resp.data?.Query2;
,
(err) =>
// always get here with only the one error
);
我什至不确定这是服务器端问题还是客户端问题?我猜我在 SERVER SIDE 做错了什么,因为我什至没有看到在操场上传回的成功数据。
【问题讨论】:
【参考方案1】:我的问题确实是服务器端的。尽管许多文章都谈到将 null 添加到模式中,但我们让构建自动从类创建我们的模式。所以为了解决我的问题,我必须在我的所有查询中添加 nullable。添加后,我的组合查询将返回成功数据和失败数据以及错误对象。
@Query(() => [MyClass]**, nullable: true **)
【讨论】:
以上是关于Apollo gql:当一个有效而一个失败时,我如何处理捆绑查询?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Apollo gql 编写 WHERE GraphQL 查询
如何使用 GQL 从 React 前端的 Apollo 客户端获取错误