我需要为以下Yaml定义节点类型。 “条目”字段可以采用不同的形状:
- title: Exercise
instructions: "Do stuff"
entries:
- type: "fill"
value: "Fill %s with %s "
solutions: ["this", "something"]
- type: "choice"
values: [choice1, choice2, choice3]
solution: 1
在gatsby-node.js中创建节点类型时,我希望能够使用联合来定义不同的嵌套类型,如下所示:
exports.sourceNodes = ({ actions }) => {
actions.createTypes(`
union Entry = ChoiceEntry | FillEntry
type Exercise implements Node @dontInfer {
id: ID!
title: String!
instructions: String!
entries: [Entry]!
}
type ChoiceEntry {
type: String!
value: [String!]!
solution: Int!
}
type FillEntry {
type: String!
value: String!
solutions: [String!]!
}
`)
}
不幸的是,我无法按照我的期望进行查询:
query MyQuery {
allExercise {
nodes {
id
entries {
... on ChoiceEntry {
type
}
... on FillEntry {
type
}
}
}
}
}
我收到错误:“ TypeError:无法读取未定义的属性'type'”。
我在做什么错?也许这不是正确的方法,不同类型的Entry应该是它们自己的节点,工会才能正常运行?但是,如果是这样,仍然可以解析输入的yaml吗?