2017-02-07 38 views
0

当客户端发送请求时,我想知道客户端请求数据的字段是什么。例如,在GraphQL/Sangria-Graphql中知道服务器端指定的字段

{ 
    user { 
    name 
    address 
    } 
} 

在上述请求,客户端已经请求name字段和用户的address字段。在执行查询时,我如何知道/获取这些指定的字段,即sangria-graphql Server中的名称和地址?

回答

2

你必须使用4th参数resolve()

resolve: (obj, args, auth, fieldASTs) => { 
    /* all your fields are present in selections 
     please check the fieldASTs JSON path it may vary if you are using relay 
                   connections */ 
    const requiredFields = fieldASTs.fieldNodes[0].selectionSet.selections.map(
     (set) => set.name.value 
    ); 
    // requiredFields will contain the name and address 
} 
/* fieldASTs contains fieldNames, fieldNodes and every details about your Schema 
you can get your specified fields inside fieldNodes like */ 
+0

这是graphql-JS吧?你能告诉我如何实现与sangria-graphql相同吗?无论如何,我会尝试用桑格利亚汽酒来解决它。谢谢。 –

+0

是的它是graphql-js请放一些'代码' –

+1

好吧,我只是想通了。我修改了我的代码到'resolve = c => {c.astFields.head.selections.map(fld => println(fld.renderCompact));'在QueryType字段中。谢谢。 –

相关问题