【发布时间】:2021-01-15 20:42:42
【问题描述】:
对于以下查询,在results 数组中的一些 对象中,某些请求的字段可能不会出现在响应中(例如photo 或address),这导致我的useQuery 的data 为undefined(没有任何错误或警告)。
people(xyz: { q: $q, offset: $offset, rows: $rows }) {
results {
uri <--- this is a field of type ID!
name
photo
address {
city
country
}
}
}
我的解决方法是专门检查传入数据中是否存在该字段并提供后备值,即:将Person 的类型策略传递为{keyFields: false},并在merge 函数中执行此操作:
newItem = {...item};
newItem.photo = item.photo ?? null;
newItem.address = item.address ?? {city: "", country: ""};
之所以必须这样做是因为Person 类型中没有id 字段(相反,uri 的类型是ID!)?
我可以更好地处理这个问题吗?
【问题讨论】:
标签: graphql apollo missing-data apollo-client typepolicies