【问题标题】:GraphQL argument passingGraphQL 参数传递
【发布时间】:2021-12-05 05:16:05
【问题描述】:

我开始学习graphql。但我不能通过论点。当我 console.log 参数时,这是未定义的。我想从客户端传递greeting 的名称值并将其作为参数传递。

//schema
//resolvers

import { GraphQLServer } from "graphql-yoga";

//Scalar type: string, Boolean, Int, Float, ID
// ! must return same scalar type
// type name always cap

const typeDefs= `
type Query{
    greeting(name: String): String!
    me: User!
    post: Post!
}

type User{
    id: ID!
    name: String!
    email: String!
    age: Int
}
type Post{
    id:ID!
    title: String!
    body: String!
}
`
//age value is not must
//resolvers get four args parent,args,ctx,info

const resolvers={
    Query:{
        greeting:(args)=>{
            console.log(args)
            return `Konika said to ${args.name}`
        },
        me:()=>{
            return{
                id:"12345",
                name: "jalmal",
                email: "ja@gmail.com",
                age: null
            }
        },
        post:()=>{
            return{
                id: "12345",
                title:"I am ok with it",
                body:"Why I am failed"
            }
        }
       
    }
}

const server = new GraphQLServer({typeDefs, resolvers})
server.start(()=>console.log(`server is running`));

我的查询是这样的

query{
  greeting(name: "milar")
  me{
    id
    email
    age
  }
  post{
    id
    title
  }
}

我找不到 args 未定义的原因。

【问题讨论】:

    标签: node.js graphql graphql-js


    【解决方案1】:

    来自客户端的args 作为解析器的第二个参数传递。见Root fields & resolvers

    应该是:

    const resolvers={
        Query:{
            greeting:(_, args)=>{
                console.log(args)
                return `Konika said to ${args.name}`
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-02
      • 1970-01-01
      • 1970-01-01
      • 2017-09-27
      • 1970-01-01
      • 2023-01-26
      • 2017-02-05
      • 2016-12-12
      相关资源
      最近更新 更多