Graphql Apollo v3 cache.modify用于不带字段的查询

Graphql Apollo v3 cache.modify用于不带字段的查询,graphql,apollo,apollo-angular,Graphql,Apollo,Apollo Angular,尝试使用Apollo v3缓存的不可变特性,特别是cache.modify(在发生变异后),但由于需要更新的查询是平面的且没有字段,因此面临一些挑战 服务器返回一个数组作为查询的结果: const STATE_LIST = gql` query stateNames { stateNames }`; 典型的查询结果是: { "data": { "stateNames": [ "California",

尝试使用Apollo v3缓存的不可变特性,特别是cache.modify(在发生变异后),但由于需要更新的查询是平面的且没有字段,因此面临一些挑战

服务器返回一个数组作为查询的结果:

const STATE_LIST = gql`
query stateNames {
    stateNames 
}`;
典型的查询结果是:

{
  "data": {
    "stateNames": [
      "California",
      "New York",
      "Texas",
      "Arizona"
    ]
  }
}
变异返回添加到服务器上的州名,如“新墨西哥州”。要更新缓存,cache.modify函数需要筛选我没有的字段(请参见“示例:从列表中删除项”)。我也没有这个数组的ID。所以我甚至不知道如何开始。在定义同样依赖于查询字段(而不是像我这样的平面查询)的合并函数时,也存在类似的挑战

非常感谢您在编写这个cache.modify函数时提供的任何帮助。

像这样,但没有新的ref,只需向现有数组添加新的数据/元素即可