You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中如何通过Apollo Client处理Neo4j GraphQL请求错误

在Apollo Client中捕获Neo4j GraphQL请求错误并打印到控制台

你可以通过两种核心方式捕获并打印错误:

1. 使用try/catch捕获异步请求异常

client.mutate是异步操作,当请求发生网络错误或GraphQL返回致命错误时会抛出异常,用try/catch可以直接捕获:

client_id="7b8c903a-3402";
text= "Some Text";

const preppedQuery = gql`
        mutation CreateMaps(
          $client_id: String!
          $text: String!
        ) {
          createMaps(
            input: [{ client_id: $client_id,  text: $text }]
          ) {
            info {
              nodesCreated
              relationshipsCreated
            }
            maps {
              uid
            }
          }
        }
      `;

try {
  const res = await client.mutate({
    mutation: preppedQuery,
    variables: { client_id, text },
  });

  // 检查GraphQL返回的非致命业务错误(不会触发catch)
  if (res.errors) {
    console.error("GraphQL业务错误:", res.errors);
  } else {
    console.log("请求成功:", res.data);
  }
} catch (error) {
  // 捕获网络错误或致命GraphQL错误
  console.error("请求异常:", error);
}

2. 配置errorPolicy获取完整错误信息

默认情况下Apollo Client遇到错误会抛出异常并忽略返回数据,设置errorPolicy: 'all'后,无论是否有错误,都能同时拿到数据和错误信息:

const res = await client.mutate({
  mutation: preppedQuery,
  variables: { client_id, text },
  errorPolicy: 'all', // 关键配置
});

// 统一处理错误和数据
if (res.errors) {
  console.error("GraphQL错误:", res.errors);
}
if (res.data) {
  console.log("返回数据:", res.data);
}

补充说明:

  • res.errors是GraphQL返回的错误数组,包含字段验证错误、Neo4j数据库错误等业务相关错误。
  • catch块捕获的是网络层面的错误,或者Apollo Client判定的致命错误(比如查询语法错误)。

内容的提问来源于stack exchange,提问作者Sac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 06:57:38