用于嵌套对象的 Apollo Graphql 解析器

Apollo Graphql Resolver for a Nested Object

所以我有这样的类型:

type CardStatus {
  status: String
  lastUpdated: String
}

type CardCompany {
  cardStatus: CardStatus
}

type ExternalAccounting {
  cardCompany: CardCompany
}

type User {
  balance: String
  externalAccounting: ExternalAccounting
}

我的解析器看起来像这样

const User = {
  balance: (root, args, context) => getBalance().then((res)=>res)
  cardStatus: (??)
}

我想使用解析器在用户对象中设置嵌套的 cardStatus 字段。

Balance 是对象的直接字段,这很容易-我只是 运行 一个解析器和 return 结果来获得平衡。我想 运行 cardStatus api 调用深层嵌套的 cardStatus 字段,但我不知道如何执行此操作。我在我的解析器中试过这样的东西:

  const User = {
    balance: {...}
    externalAccounting: {
      cardCompany: {
        cardStatus: (root) => { (...) },
      },
    },
  }

但它不起作用,因为它没有设置用户对象的 cardStatus 嵌套字段。看起来应该比较容易,但是我在网上找不到例子..

您应该在 CardCompany 类型下定义 cardStatus 解析器。

定义类型时,它们应该在解析器映射中处于同一级别。 Apollo 将根据每个嵌套字段的类型负责解析查询的嵌套字段。

因此您的代码应如下所示:

const User = {
  balance: (root, args, context) => getBalance().then((res)=>res)
}

const CardCompany = {
  cardStatus: (root) => { (...) },
}

我不确定它是如何连接到您的可执行模式的,但它可能类似于:

const schema = makeExecutableSchema({
  typeDefs,
  resolvers: merge(User, CardCompany, /* ... more resolvers */ )
})