Graphql:如何在解析器中获取类型的字段参数?

时间:2018-01-06 11:46:34

标签: node.js graphql apollo-server

我使用graphql-tools库和makeExecutableSchema函数通过将架构和解析器传递给它来制作我的架构

这是我的架构:

type Trip {
  code: String!
  driver: User!
  vehicle: Vehicle!
  destination: Location!
  passengers(page: Int, count: Int): [User!]!
}
type Query {
  trip(id: String!): Trip
}

这是我的解析器:

// some imports...
export default {
  Query: {
    async trip(_, { id }, ctx, info) {
      const trip = await Trip.findById(id);
      // const page = ???, count = ???
      // work on fetch data...
      return result;
    },
};

如何将pagecount定义为passengers的嵌套参数?

1 个答案:

答案 0 :(得分:1)

您应该为Trip类型定义解析器,例如:

export default {
  Query: {
    async trip(_, { id }, ctx, info) {
      const trip = await Trip.findById(id);
      // const page = ???, count = ???
      // work on fetch data...
      return result;
    },
  Trip: {
    async passengers(trip, { page, count }, ctx, info) {
      ...
    },
  }
};

在GraphQL中,它不是"类型"的嵌套字段的概念,而只是"字段类型"的组合。 trip类型的Query字段具有Trip类型,因此当您要使用passengers字段时,应将其视为{{1}下的字段}} type,而不是Trip类型的嵌套字段。