0

我计划将 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 数据年龄值,我想请求上面自动生成

4

1 回答 1

0

一种方法是使用以字符串形式发送的 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
 }
 }
 }
}
于 2016-06-13T05:48:50.633 回答