2017-12-28 7 views
0

"graphql-tools"を使用しています。 graphqlクエリを受信した後、ElasticSearchはデータを検索して返します。graphql-queryを解析して要求フィールドを取得するツールはありますか?

通常、クエリではすべてではなく、いくつかのフィールドが要求されます。要求されたフィールドだけをElasticSearchに渡したいと思います。 まず、要求されたフィールドを取得する必要があります。例えば

、リゾルバでは、

const resolvers = { 
    Query: { 
      async user(p, args, context) 
      { 
      //can print query as following 
      console.log(context.query)     
      } 
     ..... 
     } 
} 

  "query User { user(id:"111") { id name address } } 

がでそれを行う前に、この

  { id:"", name:"", address:"" } 

のような一部の何かを得るために任意のライブラリがあるのでそれを印刷します私は有用なものがあるかどうか知りたいですか?

答えて

1

graphql-jsリゾルバでは、resolve infoという第4引数が公開されています。このフィールドには、フィールドの詳細が表示されます。あなたがあなたのフィールドを検索し、特定のフィールドにselectionSetを得ることができますfieldNodesフィールドで

// See below about resolver functions. 
type GraphQLFieldResolveFn = (
    source?: any, 
    args?: {[argName: string]: any}, 
    context?: any, 
    info?: GraphQLResolveInfo 
) => any 

type GraphQLResolveInfo = { 
    fieldName: string, 
    fieldNodes: Array<Field>, 
    returnType: GraphQLOutputType, 
    parentType: GraphQLCompositeType, 
    schema: GraphQLSchema, 
    fragments: { [fragmentName: string]: FragmentDefinition }, 
    rootValue: any, 
    operation: OperationDefinition, 
    variableValues: { [variableName: string]: any }, 
} 

GraphQL docsGraphQLObjectType configパラメータの型定義から

。ここからはselectionsが通常のフィールド選択、フラグメントまたはインラインフラグメントになる可能性があるため、扱いにくくなります。フィールド上で選択されているすべてのフィールドを知るためにそれらをすべてマージする必要があります。

+0

私はそのような議論を見ませんでした。私は "graphql-tools"を使用しています。 – arslan

関連する問題