如何解决如何将中间件应用于 nuwave/lighthouse 版本 5 中的分组查询或突变
在灯塔 3 和 4 之前,我可以做这样的事情
extend type Mutation @group(
namespace: "Api\\Jobs\\Resolvers",middleware: ["verified"]
) {
createJob(
payload: CreateJobInput
): Job @field(resolver: "Api\\Jobs\\Resolvers\\JobResolver@create")
updateJob(
payload: UpdateJobInput
): Job @field(resolver: "Api\\Jobs\\Resolvers\\JobResolver@update")
...
}
但是在 lighthouse 5 中,@group
和 @middleware
指令被删除。我试图像这样在 OBJECT
上创建自定义指令,但没有用
namespace App\GraphQL\Directives;
use ...
final class VerifiedDirective extends BaseDirective implements FieldMiddleware,TypeManipulator
{
public function handleField(FieldValue $fieldValue,Closure $next)
{
// verify
return $next($fieldValue);
}
public static function definition(): string
{
return /** @lang GraphQL */ <<<'GRAPHQL'
directive @verified on OBJECT
GRAPHQL;
}
// I copied from other OBJECT directive
public function manipulateTypeDefinition(DocumentAST &$documentAST,TypeDefinitionNode &$typeDefinition): void
{
ASTHelper::addDirectiveToFields($this->directiveNode,$typeDefinition);
}
}
我的graphql文件现在是
extend type Mutation @namespace(field: "Api\\Companies\\Resolvers") @verified {
...
}
但它说No directive found for "verified"
。
灯塔 5 文档说我应该使用 FieldMiddleware
代替,但我不想将该指令添加到每个字段。有什么方法可以将中间件应用于分组的突变和查询吗?
提前致谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。