为对象定义graphQL模式的问题

时间:2019-03-29 23:37:33

标签: graphql schema

我有一个具有某些属性的对象,但无法定义架构。 对象的结构

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”等,此查询失败。是否有更好的方法来构建此架构?

1 个答案:

答案 0 :(得分:1)

GraphQL字段名称必须遵循某些规则。具体是/^[_a-zA-Z][_a-zA-Z0-9]*$/。如您所见,字段名称不能以数字0-9开头。某些字段名称可能对您的GraphQL API使用者不利,这取决于他们使用的语言。定义了字段名称限制,以便大多数通用语言可以轻松使用GraphQL API提供的数据。

推荐的解决方案是遵循规则并提供更好的字段名称,例如_1twofield3

您可以返回数组而不是对象,但是目前尚没有简便的方法可以为数组强制指定特定长度。最重要的是,数组的索引将从0而不是1开始。

您可以为您的对象定义自定义标量,但是这样一来,您将失去保留不必要字段的功能,并且需要更多复杂的代码才能工作。因此,我认为这是不好的做法。仅当您要处理不灵活且不透明的第三方应用程序时,别无选择。