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

如何防止合并来自apollo client3中不同apollo链接的相同字段?

如何解决如何防止合并来自apollo client3中不同apollo链接的相同字段?

我在不同的链接中有两个graphql结构,例如:一个在hasura中,另一个在ASP.NET Core Web API中使用。问题在于,对于具有不同用例用途的某种类型,它们具有相同的架构,这将导致覆盖缓存中的相同字段。让我显示代码

// Cache implementation
export const cache = new InMemoryCache({
  typePolicies: {
    Query: {
      fields: {
        tickets: {
          merge(existing = [],incoming) {
            const mergedData = [...existing,...incoming];
            return existing ? mergedData : incoming;
          }
        },},});

export const hasuraLink =  createHttpLink({
  uri: "https://blabla/v1/graphql",});

export const link=  createHttpLink({
  uri: "https://blablaDifferent/v1/graphql",});

const client = new ApolloClient({
  cache,link: ApolloLink.split(
    (operation) => operation.getContext().clientName === 'hasura',hasuraLink,link
  ),});

因此,在组件中,我可以为查询提供上下文,并确定使用此方法在运行时应使用哪个链接。但是它们具有相同的字段tickets

const TICKETS = gql`
query MyQuery {
  tickets {
    id
    body
  }
}
`;

const HASURA_TICKETS = gql`
query MyQuery {
  tickets {
    id
    body
  }
}
`;
const { data: hasuraTickets } = useQuery(HASURA_TICKETS,{
 context: {
    clientName: 'hasura',}
});
const { data: regularTickets} = useQuery(TICKETS);

票证将合并在缓存中,因为它们具有完全相同的字段名,而缓存无法区分它。我该如何克服这种情况?

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