繁体   English   中英

@Nuxt/Apollo 如何从 gql 查询中删除“__typeName”

[英]@Nuxt/Apollo How can i remove “__typeName” from gql query

我正在研究 nuxt/apollo package 但没有关于 addTypeName 属性的信息。 应该在哪里设置这个属性? 注意:所有关于 @nuxt/apollo 的安装。 (作为模块等导入)

版本信息:

"@nuxtjs/apollo": "^4.0.0-rc8",

我在 nuxt.config.js 中的 apollo 配置:

    apollo: {
    includeNodeModules: false,
    authenticationType: 'Basic',
    defaultOptions: {
      $query: {
        loadingKey: 'loading',
        fetchPolicy: 'cache-and-network'
      }
    },
    clientConfigs: {
      default: {
        httpEndpoint: 'DEFAULT_GRAPHQL_ENDPOINT',
        tokenName: 'apollo-token' // optional
      },
      financial: {
        httpEndpoint: 'NEWS_GRAPHQL_ENDPOINT',
        tokenName: 'apollo-token',
        addTypename: false --> **Is not working**
      }
    }
  }

我的 Index.vue 页面是:

apollo: {
data: {
  query: gql`
    {
      newsJson(take: 1) {
        key
        *GENERATES __typeName when sending request to Graphql*
      }
    }
  `,
  client: 'financial'
}
}

我的 graphql 查询(通过 web 上的 graphiql):

{
  newsJson(take:1){
    key
    approve
  }
}

响应是:

{
  "data": {
    "newsJson": [
      {
        "key": 2071554,
        "approve": false
      }
    ]
  }
}

当我发送请求时,__typeName 在 graphql web 方面让我崩溃。 如何防止将__typeName属性添加到请求中?

此致,

谢谢

InMemoryCache采用可选的addTypename参数,可以将其设置为false以防止这种行为。 因此,您可以执行以下操作:

clientConfigs: {
  default: {
     ...
     inMemoryCacheOptions: {
       addTypename: false,
     },
  },
}

但是,非常不建议这样做。 __typename字段与id / _id字段一起用于为缓存中的单个节点生成密钥。 有关其他详细信息,请参见此处 删除__typename可能会导致您的应用出现错误和意外行为,因此不应这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM