问题描述
我正在使用@apollo/client
v3来获取一些数据。在Chrome的“网络”标签(http结果)中,我可以看到它返回了数据和错误(我并不担心该错误,我知道为什么会这样。):
{
data: {workItems: [,…]},…},errors: [{message: "Error trying to resolve position."
}
但是在我的应用中,data
返回的是未定义的。
这是我的客户端配置:
export const graphqlClient = new ApolloClient({
cache: new InMemoryCache(),link: ApolloLink.from([
onError(({ graphQLErrors,networkError }) => {
if (graphQLErrors) {
graphQLErrors.forEach(error =>
console.log(
`[GraphQL error]: ${JSON.stringify(error,null,2)}`
)
)
}
if (networkError) {
console.log(`[Network error]: ${networkError}`)
}
}),apolloLink
])
})
我的查询:
gql`
query WorkItems($ppm: String) {
workItems(where: { ppm: $ppm }) {
...WorkItemKanban
}
}
${workItemFragment.workItemKanban}
`
const useWorkItemListDataGraphql = (args: {
query: DocumentNode
variables: { parent: string } | { ppm: string }
}) => {
const { variables,query } = args
const { data,error,loading,refetch } = useQuery<
{ workItems: WorkItem[] },{ parent: string } | { ppm: string }
>(query,{
pollInterval: 180000,variables
})
// data returns undefined,but error shows the same error as in Chrome's network tab
return { ...data,refetch }
}
我不确定从哪里开始找出问题所在。在没有错误的情况下,可以正常加载数据,但是我认为这不是正常现象,应始终按我在Chrome标签页中看到的方式加载数据。
解决方法
默认情况下,如果发生错误,apollo client
返回undefined
。
您可以在查询的选项或客户端默认选项中添加errorPolicy: 'all'
。