gpt4 book ai didi

javascript - GraphQL - 全局字段解析器

转载 作者:行者123 更新时间:2023-12-05 06:17:13 24 4
gpt4 key购买 nike

假设我有以下架构:

type CodeName {
code: Int!
name: String!
}

type Person {
id: Int!
weapon: Weapon
hat: Hat
codeName: CodeName!
}

type Weapon {
id: Int!
type: String!
codeName: CodeName!
}

type Hat {
id: Int!
size: Int!
codeName: CodeName!
}

type Query {
Person(id: Int!): Person!
Weapon(id: Int!): Weapon!
Hat(id: Int!): Hat!
}

然后,我会像这样定义我的解析器:

const resolvers = {
Weapon: {
codeName: CodeNameResolver,
},
Hat: {
codeName: CodeNameResolver,
},
Person: {
codeName: CodeNameResolver,
weapon: WeaponResolver,
hat: HatResolver
},
Query: {
Person: PersonResolver,
Weapon: WeaponResolver,
Hat: HatResolver,
}
}

但是,我必须在代码中多次重复codeName: CodeNameResolver,每次我都有一个类型为CodeName的字段。
有没有一种方法可以使用全局字段解析器或​​类型解析器,这样我就不必这样做了?

最佳答案

如果您的解析器函数是相同的,那么您将获得的结果差不多是干的。 GraphQL 没有根据字段类型全局指定解析器的机制。

您可以使用 graphql-middleware 来完成此操作

const codeNameMiddleware = async (resolve, root, args, context, info) => {
if (info.returnType.toString() === 'CodeName!') {
// resolve the field here
return someValue
}
return resolve(root, args, context, info)
}

不过,在应用这种模式时您应该谨慎。一个字段的类型只描述了它返回的数据的形状——它没有说明数据是如何获取的。即使 CodeName 字段的所有解析器现在看起来都一样,但将来可能不会是这样。

关于javascript - GraphQL - 全局字段解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61728270/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com