【发布时间】:2020-06-02 22:57:04
【问题描述】:
我正在尝试在我的gatsby-node.js 文件中构建一个支持可选值的类型。我认为这是通过[String!]! 完成的。
如何在home.js 上加载我在gatsby-node.js 中创建的新类型?
gatsby-node.js:
const path = require('path');
exports.createSchemaCustomization = ({ actions }) => {
const { createTypes } = actions;
const typeDefs = `
type markdownRemark implements Node {
frontmatter: Features
}
type Features {
title: [String!]!
description: [String!]!
}
`;
createTypes(typeDefs);
};
pages/home/home.js:
export const query = graphql`
query HomeQuery($path: String!) {
markdownRemark(frontmatter: { path: { eq: $path } }) {
html
frontmatter {
features {
title
description
}
}
}
}
`;
home.md:
---
path: "/"
features:
- title: Barns
description: Praesent commodo cursus magna vel scelerisque nisl consectetur et. Nullam id dolor id nibh ultricies vehicula ut id elit.
- title: Private Events
description: Praesent commodo cursus magna vel scelerisque nisl consectetur et. Nullam id dolor id nibh ultricies vehicula ut id elit.
- title: Food and Drinks
description: Praesent commodo cursus magna vel scelerisque nisl consectetur et. Nullam id dolor id nibh ultricies vehicula ut id elit.
- title: Spa
description: Praesent commodo cursus magna vel scelerisque nisl consectetur et. Nullam id dolor id nibh ultricies vehicula ut id elit.
---
这需要起作用,以便如果 home.md 的前面的 features 数组为空,那么 GraphQL 不会抛出错误。
请不要告诉我总是在数组中包含至少一个值,因为这不切实际,我的解决方案需要不支持数组中的值。
我花了两个小时在圈子里翻阅文档/问题,试图找到一个可行的解决方案,请有人救救我!
【问题讨论】:
标签: reactjs graphql gatsby yaml-front-matter