graphql 为啥我需要在解析器参数中声明一个额外的参数
Posted
技术标签:
【中文标题】graphql 为啥我需要在解析器参数中声明一个额外的参数【英文标题】:graphql why do I need to declare a extra parameter within a resolvers parametergraphql 为什么我需要在解析器参数中声明一个额外的参数 【发布时间】:2018-08-14 23:03:58 【问题描述】:我一直在阅读有关 graphql 的所有内容,但在解析器功能中陷入了误解:
这是我的错误解析器,我得到的是一个未定义的参数:
const jobResolvers =
Query:
job(id)
//code where I call the db ODM function
看了几篇文章后,我修复了它: (理解析构函数部分,但不知道为什么下划线_参数)
const jobResolvers =
Query:
job(_,id)
//code where I call the db ODM function
在这里你可以看到这两个非常好的和解释性的帖子运气不好他们没有解释,为什么它们是解析器函数中的两个参数(这是个大问题)
graphql服务端的实现 getAuthor(_,id) 函数的签名有两个参数,但只有第二个被使用,它不能只使用 id 参数
其他关于 GraphQL 的解释(GraphQL 服务器如何将查询转化为响应?) author(root, args) 函数的签名有两个参数,但只使用第二个参数,该函数也不能只使用 args 参数(root 永远不适合我)
【问题讨论】:
【参考方案1】:GraphQL 解析器具有特定的函数签名。 resolver(obj, args, context)
你想使用args
,所以你需要填充obj
以便正确传递args。通常人们使用_
来表示人们不需要但必须存在才能满足签名的参数。
http://graphql.org/learn/execution/#root-fields-resolvers
【讨论】:
以上是关于graphql 为啥我需要在解析器参数中声明一个额外的参数的主要内容,如果未能解决你的问题,请参考以下文章
正确声明 GraphQL Yoga 提供的 Prisma 字段但在解析器中不需要的方法
graphql-yoga - GraphQL 解析器参数在哪里定义和记录?