如何编写带有自定义对象的graphql查询

时间:2019-01-18 16:51:11

标签: graphql express-graphql

graphql的服务器端带有nodejs和express。这是graphql的架构。它具有一个查询,该查询接受具有日期和日期的DateT对象。

var schema = buildSchema(`
    type Query {
        courseWithDate(
            timeFilter: DateT
        ): Course

    },
    type Course {
        ...
        from: String
        to: String
    },
    type DateT{
        from : String
        to : String
    }
`);

这就是我获得课程的方式

我可以使用此网址运行应用程序

localhost:4000/graphql

这是我正在使用的查询

query courseWithDate($from: dateFrom, $to: dateTo) {
    courseWithDate(timeFilter: {
      from: "${dateFrom}"
      to: "${dateTo}"
    })  {
        title
        ...
    }
}

具有这些参数

{ 
   "from": "2019-10-10","to":"2019-10-10"
}

我收到的异常消息与我要传递的输入类型有关。

{
  "errors": [
    {
      "message": "The type of Query.courseWithDate(timeFilter:) must be Input Type but got: DateT.",
      "locations": [
        {
          "line": 6,
          "column": 25
        }
      ]
    }
  ]
}

1 个答案:

答案 0 :(得分:0)

我不确定,但是这种风格可能更像是最佳实践

type Course {
  id: Int
  title: String
  author: String
  from: String
  to: String
  description: String
  topic: String
  url: String
}

input DateInput {
  dateFrom: String!
  dateTo: String!
}

type Query {
  courseWithDate(input: DateInput!, name: String!): Course
}

并且在客户端的查询应该是:

  {
    courseWithDate(input: {
      dateFrom: "${dateFrom}"
      dateTo: "${dateTo}"
    }
    name: "${name}") 
    {
      id
      name
    }
  }