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