代码之家  ›  专栏  ›  技术社区  ›  Mosius sMiLo

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

  •  0
  • Mosius sMiLo  · 技术社区  · 8 年前

    我使用 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;
        },
    };
    

    我怎样才能 page count 定义为的嵌套参数 passengers ?

    1 回复  |  直到 8 年前
        1
  •  1
  •   zetavg    8 年前

    您应该为该类型定义一个解析器 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 旅行 键入,以便在需要使用 passengers 字段,应将其视为 旅行 类型,而不是 查询 类型

    推荐文章