1

我一直在到处阅读有关 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 服务器如何将查询转换为响应?作者(root,args)函数的签名有两个参数,但只使用第二个参数,该函数也不能只使用args参数(root 从不为我工作

4

1 回答 1

0

GraphQL 解析器具有特定的函数签名。resolver(obj, args, context)您想使用args,因此您需要填充obj以便正确传递 args 。通常人们_用来表示人们不需要但必须在那里以满足签名的参数。

http://graphql.org/learn/execution/#root-fields-resolvers

于 2018-03-06T23:45:25.317 回答