Apollo 客户端:从有错误的查询中检索结果

Posted

技术标签:

【中文标题】Apollo 客户端:从有错误的查询中检索结果【英文标题】:Apollo Client: retrieving the results from a query with errors 【发布时间】:2018-03-18 03:06:15 【问题描述】:

我正在使用 GraphQL Apollo 客户端。我正在尝试从有错误的查询中检索结果。

GraphQL response

即使在同一响应中返回错误,我如何检索数据?

这会自动捕获错误。相反,我希望它访问数据。

this.client.query(
  query: gql(query),
  variables: variables
).then(function ( data ) 
  return data;
).catch(error => console.log(error));

在 Apollo 文档中找不到任何关于此的内容。有什么想法吗?

【问题讨论】:

你能包含你的架构的 sn-p 吗?因为错误信息表明custom_attributesString 标量类型。 这对我来说已经不重要了,但是如果你想忽略 Apollo 中的错误,你可以使用 errorPolicy 选项。有关详细信息,请参阅apollographql.com/docs/react/features/…。 【参考方案1】:

如果你将来在这里绊倒

在 Apollo-client 中,有多种错误类型如下: 1. GraphQL 错误, 2. 服务器错误, 3.交易错误, 4. 用户界面错误, 5. Apollo 客户端错误。 作为@Alexander Schoonderwaldt,您可以了解此错误和错误政策here

您可以使用以下代码处理/捕获 graphql 错误。如果值返回 undefined,则不再是 graphql 错误。你需要调查。您可能遇到返回Error CONNREFUSED 或其他网络错误。

。询问( 查询:我的查询 ) .then(( 数据 ) => 控制台.log(data.user); 返回 登录用户:数据 ; ) .catch(错误 => // 优雅地失败 console.log(errors.message); // 记录 grapgql 错误 返回 登录用户: ; );

【讨论】:

以上是关于Apollo 客户端:从有错误的查询中检索结果的主要内容,如果未能解决你的问题,请参考以下文章

apollo 客户端,带过滤器的查询

在 Apollo 客户端上注销

React - Apollo 客户端,如何将查询结果添加到状态

如何从 graphql apollo 客户端查询中获取/记录/捕获错误

Apollo GraphQL 客户端查询返回自省结果而不是数据

Apollo 客户端 fetchPolicy 问题 - 查询调用了两次