我在这里面临一个非常奇怪的问题。
我们有一个graphql搜索查询,它接受过滤器并提供项目列表。 查询是这样的
allOpportunityV2(only: String, page: Int, per_page: Int, q: String,
with: String, sort: String, filters: OpportunityFilter): OpportunityList
OpportunityFilter是一个具有类似过滤器选择的对象
{
duration: RangeInput,
home_mcs: [Int],
programmes: [Int]
}
当我进行此查询时,对于某些过滤器组合,即使以前已查询过apollo,它也会发出网络请求,并且我在“网络”标签中得到了正确的响应,但是在apollo的成功方法中,我没有得到正确的反应。
预期结果:
查询成功后获得正确的响应
实际结果:
{
data: undefined
loading: false
networkStatus: 7
stale: true
}
对于某些组合,它只是随机发生的,很难准确再现。
答案 0 :(得分:0)
如此处https://github.com/apollographql/apollo-client/issues/3030#issuecomment-448472845
所述经过数次跟踪之后,我发现只要有 投影结果中缺少字段。例如,如果我们 应该查询以下用户:
user { uuid email picture }
,并针对 由于某种原因,服务器未返回字段picture
,因此结果将为 是:
{ data: null loading: false networkStatus: 7 stale: true }
我也注意到我们会在 控制台。
在我的特定情况下,后端从不序列化
null
值。以来 用户的图片和许多其他字段是可选的(可为空),我们 不断面对这个问题。
这几乎总是后端服务器的问题。即使任何特定字段的数据为空,您也必须仔细序列化响应中的所有内容。这为我们解决了问题。