微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Apollo 使用 @client 指令混合本地和远程字段

如何解决使用 Apollo 使用 @client 指令混合本地和远程字段

我在 VueJS 应用程序中使用 apollo-client@2.6.10

我有一个 user 类型(直到最近)使用了仅限本地的字段。这是本地查询和相应的变异:

query currentUserQuery  {
  user @client {
    id
    email
    emailVerified
    displayName
  }
}

mutation setCurrentUser($id: ID!,$email: String!,$emailVerified: Boolean!,$displayName: String) {
  update_current_user(
    id: $id,email: $email,emailVerified: $emailVerified,displayName: $displayName
) @client
}

而且我也有一个对应的突变解析器:

resolvers = {
  Mutation: {
    update_current_user: (_,{ id,email,emailVerified,displayName },{ cache }) => {
      const data = cache.readQuery({ query: currentUserQuery })
      const user = {
        __typename: 'User',id,displayName
      }
      data.user = user
      cache.writeData({ data })
      return user
    }
}

到目前为止,一切都很好!

我现在想做的是从远程 api 中混合一些额外的字段。所以,我修改查询

query currentUserQuery  {
  user {
    id @client
    email @client
    emailVerified @client
    displayName @client
    tier {
      id
      name
    }
  }
}

我还更新了写入 cache.writeQuery 的初始缓存对象以包含占位符 tier 数据。

但无论我如何解决这个问题,层始终是初始化的 null 值,在检查网络流量后,我可以看到没有获取远程字段。

我应该对解析器做一些不同的事情吗?我试过对本地字段使用本地查询解析器(而不是依赖从缓存中直接获取),但无济于事。

在阅读了 v2 文档并尝试了各种不同的方法后,我不知道什么在这里不起作用。

非常感谢帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。