GraphQL 同构模型
Posted
技术标签:
【中文标题】GraphQL 同构模型【英文标题】:GraphQL isomorfic model 【发布时间】:2016-08-13 03:18:43 【问题描述】:我计划将 Angular2 与 GraphQL 一起使用。我正在寻找一种在客户端上使用 GraphQL 模型来动态构建查询的方法。我该如何实现这个想法?
GraphQL 模型看起来像
exports default new GrapqhQLObjectType(
name: 'User',
description: 'A user type in our application',
fields: () =>
_id:
type: new GraphQLNonNull(GraphQLID)
,
name:
type: new GraphQLNonNull(GraphQLString)
,
surname:
type: new GraphQLNonNull(GraphQLString)
,
age:
type: GraphQLInt
);
从 GraphQL.JS 导入所有数据类型
我想通过这个 GraphQL 模型验证客户端上的数据数据类型。
GraphQL 查询看起来像
mutation RootMutation
editUser (name: "Bjarne", age:64)
name
surname
_id
age
我更改了 Angular2 数据年龄值,我想请求上面自动生成
【问题讨论】:
你能详细说明一下吗?它可以让了解 Angular2 但不了解 GraphQL 的人提供答案,反之亦然。 【参考方案1】:一种方法是使用以字符串形式发送的 GraphQL 的自省查询来自省模式(如下所示)。您可以通过交叉检查从模式返回的类型来在本机应用程序中执行类型验证。除此之外,您可以使用 GraphiQL (https://github.com/graphql/graphiql) 发送请求,以确保您的查询/变异在您的应用中包含之前是正确的。
query IntrospectionQuery
__schema
queryType name
mutationType name
subscriptionType name
types
...FullType
directives
name
description
locations
args
...InputValue
fragment FullType on __Type
kind
name
description
fields(includeDeprecated: true)
name
description
args
...InputValue
type
...TypeRef
isDeprecated
deprecationReason
inputFields
...InputValue
interfaces
...TypeRef
enumValues(includeDeprecated: true)
name
description
isDeprecated
deprecationReason
possibleTypes
...TypeRef
fragment InputValue on __InputValue
name
description
type ...TypeRef
defaultValue
fragment TypeRef on __Type
kind
name
ofType
kind
name
ofType
kind
name
ofType
kind
name
【讨论】:
以上是关于GraphQL 同构模型的主要内容,如果未能解决你的问题,请参考以下文章
使用 GraphQL,声明一个与 GraphQL“类型”没有任何明显差异的支持模型“类”有啥好处或必要性?
如何将“typeorm”模型转换为 graphql 有效负载?
从 Rest(Express) 迁移到 GraphQL:模型(mongoose) 在 graphQL 解析器中不起作用