所以我有这样的类型:
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是对象的直接字段,很容易 - 我只需运行一个解析器并返回结果以获得平衡。我想为深度嵌套的cardStatus字段运行cardStatus api调用,但我不知道如何执行此操作。我在我的解析器中试过这样的东西:
const User = {
balance: {...}
externalAccounting: {
cardCompany: {
cardStatus: (root) => { (...) },
},
},
}
但它不起作用,因为它没有设置用户对象的cardStatus嵌套字段。似乎它应该相对容易但我在网上找不到一个例子..
答案 0 :(得分:3)
您应该在cardStatus
类型下定义CardCompany
解析器。
定义类型时,它们应该在解析器映射中处于同一级别。 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 */ )
})