如何在spring boot graphql中过滤子字段

ugmeyewa  于 2021-07-15  发布在  Java
关注(0)|答案(0)|浏览(202)

我正在使用https://github.com/graphql-java-kickstart/graphql-spring-boot 在一个spring boot项目上。我需要在子字段上进行过滤。例如:

query{
  userByEmail(email:"xxxx@info.com"){
    firstName
    lastName
    roles(take: 2){
      name
    }
  }
}

这是我的密码:
架构

type User{
    id: ID!
    firstName: String
    lastName: String
    email: String
    roles: [Role!]
    birthDate: Date
}

 type Query {
    userByEmail(email:String): User
}

查询解析器

@Component
@RequiredArgsConstructor
public class UserQueryResolver implements GraphQLQueryResolver {
    private final IUserRepository userRepository;

    public User userByEmail(String email) {
        return userRepository.findByEmail(email).orElse(null);
    }
}

分解器

@Component
@RequiredArgsConstructor
@Slf4j
public class UserResolver implements GraphQLResolver<User> {

    public CompletableFuture<List<Role>> roles(User user, DataFetchingEnvironment dfe) {
        final DataLoader<Long, List<Role>> dataloader = dfe.getDataLoaderRegistry().getDataLoader("userRoleDataLoader");

        return dataloader.load(user.getId(), user);
    }
}

在我的应用程序上一切都很好,但我不能在子字段上集成过滤。当我在模式上设置用户类型时,例如:

type User{
    id: ID!
    firstName: String
    lastName: String
    email: String
    roles(take: Int): [Role!]
    birthDate: Date
}

datafetchingenvironment dfe将为空。如何对子字段进行过滤?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题