我正在使用Gatsby和GraphQL,对GraphQL还是陌生的。
我具有以下架构定义:
exports.createSchemaCustomization = ({ actions }) => {
const { createTypes } = actions;
const typeDefs = `
type MarkdownRemark implements Node {
frontmatter: Frontmatter
}
type Frontmatter {
title: String!
products: [Product]
}
type Product @dontInfer {
name: String!
price(price: Int = 1): Float
description: String
images: [ProductImage]
}
type ProductImage {
url: String
}
`;
createTypes(typeDefs);
};
然后在我的页面上,我使用以下查询:
query {
markdownRemark(fileRelativePath: { eq: "/content/pages/products.md" }) {
...TinaRemark
frontmatter {
title
products {
name
price
description
images {
url {
childImageSharp {
fluid(maxWidth: 1920) {
...GatsbyImageSharpFluid_withWebp
}
}
}
}
}
}
html
}
}
然后我收到以下错误:
Field "url" must not have a selection since type "String" has no subfields.
有人对如何解决此错误有任何建议吗?
另外,childImageSharp
是什么?我想知道定义它的术语是什么。是GraphQL的“选择器”还是“功能”?
答案 0 :(得分:1)
应该是
query {
markdownRemark(fileRelativePath: { eq: "/content/pages/products.md" }) {
...TinaRemark
frontmatter {
title
products {
name
price
description
images {
url
}
}
}
html
}
}
因为定义是
type ProductImage {
url: String
}
url
显然没有子字段。
答案 1 :(得分:0)
我在返回布尔值时遇到了类似的问题。对我来说,不是这样的
mutation {
someFunc(
memo: "test memo"
) {
success
}
}
我需要这个
mutation {
someFunc(
memo: "test memo"
)
}