Kor*_*don 10 apollo graphql apollo-server apollostack apollo-client
我正在使用Apollo Stack graphql-server-express和apollo-client.
因为我的后端不完美,所以可能会出现错误,因此我必须对该路径的错误请求做出响应.
直到现在我的主要问题是身份验证,因此我回复了一个错误.
return new Error(`${data.status}: ${data.statusText} @ ${data.url}`)
Run Code Online (Sandbox Code Playgroud)
在前端,我使用apollo-client查询数据.
return apollo
.query({query: gql`
query {
${query}
}`,
forceFetch: forceFetch
})
.then(result => { debugger; return result.data })
.catch(error => { debugger; console.error(error); });
Run Code Online (Sandbox Code Playgroud)
但是,如果查询的一个属性响应错误,则只调用catch函数.即使是剩余属性的数据也会被转移,我在Chrome开发工具的网络标签中看到了这一点.In不是catch函数中的错误对象.
我的尝试与GraphiQL一起使用,我在同一个对象中获取错误和数据.
那么如何在不丢失整个请求的情况下为属性抛出错误呢?
您可以手动查找您承诺的result.error部分then并避免使用catch. 另外我认为then您还可以在调用后添加一个catch来处理这种特定情况。
除此之外,您还可以在 GraphQL 服务器中使用formatError来手动过滤和格式化错误消息。该函数的主体如下,您可以访问抛出的Error.
formatError: (error) => {
return {
name: error.name,
mensaje: error.message
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1524 次 |
| 最近记录: |