graphql为什么我需要在resolvers参数中声明一个额外的参数

时间:2018-03-06 23:41:32

标签: javascript express graphql apollo-server express-graphql

我一直在阅读有关graphql的所有内容,并且陷入了解析器函数中的误解实现:

这是我糟糕的解决方案,我得到的是一个未定义的论点:

const jobResolvers = {
   Query: {
     job(id) {
       //code where I call the db ODM function
     }
   }
 }

看了几篇文章后我修复了它: (了解析构函数部分,但不是为什么使用下划线_paremeter)

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 个答案:

答案 0 :(得分:0)

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

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