我正在尝试使用片段重用我的graphql代码,但是尽管在使用片段代码之前工作正常,但它无法正常工作。
这是我的代码的样子
fragments.js
import gql from 'graphql-tag';
export const postFragment = gql`
fragment PostData on postsConnection {
edges {
node {
id
title
date
featuredImage {
sourceUrl
}
}
}
} `
这是我的查询文件querys / posts.js
import gql from 'graphql-tag';
import {postFragment} from '../fragments';
export const getAllPosts = gql`
query getAllPosts {
posts {
...PostData
}
}
${postFragment}
`;
这是错误信息
[GraphQL错误]:消息:未知类型“ postsConnection”。,位置:[对象对象],路径:未定义
我该如何解决?
答案 0 :(得分:1)
来自spec:
片段必须指定它们适用的类型...片段不能在任何输入值(标量,枚举或输入对象)上指定。可以在对象类型,接口和联合上指定片段。片段中的选择仅在其操作的对象的具体类型与片段的类型匹配时才返回值。
一个片段必须指定它适用的类型,并且该类型必须实际上存在于您的模式中。根据您看到的错误,postsConnection
不是有效的类型。查看架构文档,或运行自省查询以确定posts
字段的正确类型。
一个简单的自省查询,用于获取查询类型的所有字段的名称和类型:
query GetQueryFields {
__schema {
queryType {
fields {
name
type {
name
kind
}
}
}
}
}