5

我想要做什么

使用来自我们的 graphql 服务器的错误数据渲染页面服务器端。

语境

我们的 GraphQL 服务器与多个 API 对话并返回由 Apollo UI 处理的 graphQL 响应。

某些 GraphQL 错误不被认为是严重的,我们仍然希望使用它来呈现页面。例如

data: {
   thing: {
       id: "1234"
       name: "Thing"
       nonCriticalData: null
   },
   error: {
       graphQLErrors: [
           path: ['thing', 'nonCriticalData']
       ]
   }
}

通过我们从 Apollo 获得的上述响应,我们仍然希望使用thing. 看看getDataFromTree 这里的实现,任何错误都会被抛出,而没有其余的数据。

我们计划如何处理我们的错误

以下是我们计划如何处理代码的片段:

getDataFromTree(app)
    .then(() => {})
    .catch(error => {

        const content = ReactDOMServer.renderToString(app);
        const { data } = client.getInitialState();

        console.log("data", data); <-------------- We need data here
        console.log("error", error); <———————— errors are here

        // render page with data
    });

如果有办法解决这个问题,或者我是否遗漏了什么,请告诉我。

额外问题:

  1. 甚至应该getDataFromTree抛出错误?感觉责任应该在消费者身上。
4

0 回答 0