我有一个具有某些属性的对象,但无法定义架构。 对象的结构
const typeDef = gql`
type Query {
scoreByRank: Count
}
type Count {
"1": obj
"2": obj
"3": obj
}
type obj{
average: Int
count: Int
}
`;
我的模式
{{1}}
但是由于对象prop带有“ 1”,“ 2”等,此查询失败。是否有更好的方法来构建此架构?
答案 0 :(得分:1)
GraphQL字段名称必须遵循某些规则。具体是/^[_a-zA-Z][_a-zA-Z0-9]*$/
。如您所见,字段名称不能以数字0-9开头。某些字段名称可能对您的GraphQL API使用者不利,这取决于他们使用的语言。定义了字段名称限制,以便大多数通用语言可以轻松使用GraphQL API提供的数据。
推荐的解决方案是遵循规则并提供更好的字段名称,例如_1
,two
或field3
。
您可以返回数组而不是对象,但是目前尚没有简便的方法可以为数组强制指定特定长度。最重要的是,数组的索引将从0而不是1开始。
您可以为您的对象定义自定义标量,但是这样一来,您将失去保留不必要字段的功能,并且需要更多复杂的代码才能工作。因此,我认为这是不好的做法。仅当您要处理不灵活且不透明的第三方应用程序时,别无选择。