嵌套对象的Apollo Graphql解析器
所以我有这样一种类型:嵌套对象的Apollo Graphql解析器,graphql,apollo-server,Graphql,Apollo Server,所以我有这样一种类型: type CardStatus { status: String lastUpdated: String } type CardCompany { cardStatus: CardStatus } type ExternalAccounting { cardCompany: CardCompany } type User { balance: String externalAccounting: ExternalAccounting }
type CardStatus {
status: String
lastUpdated: String
}
type CardCompany {
cardStatus: CardStatus
}
type ExternalAccounting {
cardCompany: CardCompany
}
type User {
balance: String
externalAccounting: ExternalAccounting
}
const User = {
balance: {...}
externalAccounting: {
cardCompany: {
cardStatus: (root) => { (...) },
},
},
}
const User = {
balance: (root, args, context) => getBalance().then((res)=>res)
}
const CardCompany = {
cardStatus: (root) => { (...) },
}
我的解析器看起来像这样
const User = {
balance: (root, args, context) => getBalance().then((res)=>res)
cardStatus: (??)
}
我想使用解析器在用户对象中设置嵌套的cardStatus字段
Balance是对象的直接字段,很简单-我只需运行一个解析器并返回结果即可获得Balance。我想为深度嵌套的cardStatus字段运行cardStatus api调用,但我不知道如何执行此操作。我在我的解析器中尝试过如下内容:
type CardStatus {
status: String
lastUpdated: String
}
type CardCompany {
cardStatus: CardStatus
}
type ExternalAccounting {
cardCompany: CardCompany
}
type User {
balance: String
externalAccounting: ExternalAccounting
}
const User = {
balance: {...}
externalAccounting: {
cardCompany: {
cardStatus: (root) => { (...) },
},
},
}
const User = {
balance: (root, args, context) => getBalance().then((res)=>res)
}
const CardCompany = {
cardStatus: (root) => { (...) },
}
但它不起作用,因为它没有设置用户对象的cardStatus嵌套字段。看起来应该相对容易,但我在网上找不到示例。您应该在类型
CardCompany
下定义cardStatus
解析程序
定义类型时,它们应该在冲突解决程序映射中处于同一级别。Apollo将负责根据每个嵌套字段的类型解析查询的嵌套字段
因此,您的代码应该如下所示:
type CardStatus {
status: String
lastUpdated: String
}
type CardCompany {
cardStatus: CardStatus
}
type ExternalAccounting {
cardCompany: CardCompany
}
type User {
balance: String
externalAccounting: ExternalAccounting
}
const User = {
balance: {...}
externalAccounting: {
cardCompany: {
cardStatus: (root) => { (...) },
},
},
}
const User = {
balance: (root, args, context) => getBalance().then((res)=>res)
}
const CardCompany = {
cardStatus: (root) => { (...) },
}
我不确定它是如何连接到您的可执行模式的,但它可能类似于:
const schema = makeExecutableSchema({
typeDefs,
resolvers: merge(User, CardCompany, /* ... more resolvers */ )
})
请在你的问题中提供更多的细节——如果有些东西“不起作用”,你期望什么样的行为,你看到了什么样的行为?如果抛出错误,错误是什么?此外,还不清楚第三个代码段位于何处——如果包含所有解析程序的代码就更好了。