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