允许自定义属性的类型的graphQL模式

时间:2018-10-22 19:24:47

标签: graphql apollo

我最近才开始研究graphQL,对此我感到非常兴奋,但是我想知道当架构可以根据用户操作进行更改时它如何工作。我们应用程序中的类型可以具有用户定义的属性,并且我已经阅读到,动态模式在graphQL中可能很复杂。在graphQl / Apollo中是否有针对此类架构的解决方案。

1 个答案:

答案 0 :(得分:0)

GraphQL非常适用于定义了数据“形状”的API。例如,在GitHub GraphQL API中,存储库的Refs(标记或分支)和GitObjects(提交或标记)都具有相当固定的属性集。您不会为每个分支创建一个单独的GraphQL字段。相反,您可能会寻找

query WhereIsMaster($name: String!, $owner: String!) {
  repository(name: $name, owner: $owner) {
    refs(refPrefix: "refs/heads/master") {
      nodes {
        target {
          oid
        }
      }
    }
  }
}

如果您正在设计自己的模式,并且具有键/值类型存储,则必须为其编写自己的查找

type KeyValuePair implements Node {
  id: ID!
  key: String!
  value: String!
}
type Query {
  lookup(key: String!): KeyValuePair
}
type Mutation {
  insert(key: String!, value: String!): KeyValuePair!
}

如果您的数据模型是真正的自由格式(举一个著名的例子,MongoDB允许存储任意JSON文档),那么GraphQL并不是一个很好的选择。