我在 y GraphQL 模式中有以下指令来检查参数是否是真正的 slug
directive @slug on ARGUMENT_DEFINITION
Query {
subject(id: ID! @slug): Subject
}
在使用SchemaDirectiveVisitor
from之前apollo-server-express
,我们有一个可行的解决方案,据我了解,这只是从 graphql-tools 重新导出。由于最新的主要版本已将其删除,因此我们必须对其进行重构。据我了解,graphql-tools API 也发生了变化,因此要对指令做出反应,我们必须遵循此处的示例。
所以这就是我到目前为止所拥有的,但它根本没有进入fieldConfig.resolve
函数:
export default function (schema) {
return mapSchema(schema, {
[MapperKind.ARGUMENT]: fieldConfig => {
const slugDirective = getDirective(schema, fieldConfig, 'slug')?.[0]
if (slugDirective) {
const { resolve = defaultFieldResolver } = fieldConfig
fieldConfig.resolve = async function (
source,
args,
context,
info
) {
const result = await resolve(source, args, context, info)
console.log('result', result)
}
return fieldConfig
}
},
})
}