0

我在 y GraphQL 模式中有以下指令来检查参数是否是真正的 slug

directive @slug on ARGUMENT_DEFINITION

Query {
   subject(id: ID! @slug): Subject
}

在使用SchemaDirectiveVisitorfrom之前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
            }
        },
    })
}
4

0 回答 0