对Apollo突变的反应可以忽略视野吗?

时间:2019-08-06 17:32:32

标签: ios graphql apollo

现在,成功完成突变后,我再次发送了更新数据的请求。我想消除第二个请求。

根据Apollo docs,如果实现对象ID,则可以免费获取缓存更新。这依赖于graphql服务器返回可以由Apollo标准化的响应(带有更新的数据)。

突变响应只能包含我对象的一些字段吗?例如,我有一个Hero对象,它定义了英雄的nameage。但是用户界面仅允许用户更改名称。我可以只返回英雄的name来保持age不变吗?

1 个答案:

答案 0 :(得分:0)

是的,您可以以与mutation相同的方式从query的结果中查询所需的任何字段。您只需在更新对象后返回它即可。

例如:

mutation {
  updateHero(newHero: { name: "John Doe" }) {
    name
  }
}

还有一件事。尽管建议从mutation返回更新的对象,但另一方面,也建议根据UI需求设计GraphQL服务器。因此,如果您认为更新后不需要整个对象,则始终可以只返回名称。

在此架构中,您的架构如下所示:

Mutation {
  updateHero(newHero: UpdateHeroInput!): String!
}

对应的查询将是:

mutation {
  updateHero(newHero: { name: "John Doe" })
}

请注意,由于返回单个标量值(字符串),因此没有选择字段。