我想要做什么
使用来自我们的 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
});
如果有办法解决这个问题,或者我是否遗漏了什么,请告诉我。
额外问题:
- 甚至应该
getDataFromTree
抛出错误?感觉责任应该在消费者身上。