【发布时间】:2020-02-02 18:50:26
【问题描述】:
我正在开发 nuxt/apollo 包,但没有关于 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 网页端让我崩溃。如何防止将 __typeName 属性添加到请求中?
最好的问候,
谢谢
【问题讨论】:
-
“_typeName 在 graphql Web 端让我崩溃”不是很清楚。 Apollo 添加的属性是 _typename,而不是 _typeName。这是a standard meta field added by GraphQL。如果您尝试在 GraphiQL 中请求 _typeName(而不是 __typename),则会收到错误消息,因为不存在此类字段。
-
添加 __typename 字段的客户端不会导致您的查询出现任何问题。另一方面,省略该字段可能会导致您的客户出现问题。
-
@DanielRearden 我的 gql 函数(graphql-tag)生成包含 _typeName(内置)字段的查询并发送到 graphql 端点。 (我没有手动添加此字段。)此状态导致 graphql 端点出现问题。示例 gql 输出将发送端点 --> {newsJson(take:1){ key _typeName }}
-
graphql-tag 仅将字符串转换为 GraphQL DocumentNode 对象。它不会向您的请求添加任何字段。如果发送到服务器的请求以
__typeName而不是__typename结束,那么还有其他事情发生。也许你可以提供一个完整代码的 repo 链接,或者提供一个重现错误的沙箱。 -
我在沙盒上工作