首页 > 解决方案 > 带有 Spring Boot Java Validation 类型错误的 FieldUndefined 的 GraphQL

问题描述

我是 GraphQL 的新手,正在创建一个实体并通过属性获取该实体的实例。该实体名为 UserProfile,我为其定义了如下架构:

type UserProfile{
    id:String!
    username:String!
    // A huge list of other attributes
}

type Query {
    getUserProfile(username:String!):UserProfile!
}

type Mutation {
    addUserProfile(username:String!):Boolean!
}

我还为它定义了控制器,分别为 Query 和 Mutation 类型实现了 GraphQLQueryResolver 和 GraphQLMutationResolver。他们的代码是:

@Component
public class UserProfileGraphQLMutationController implements GraphQLMutationResolver {
    private static final Logger logger = LoggerFactory.getLogger(UserController.class);

    @Autowired
    private UserProfileRepository userProfileRepository;

    @Autowired
    private UserRepository userRepository;

    @Transactional
    public Boolean addUserProfile(String username) {
        logger.info("Searching for user: "+username);
        User user = userRepository.findByUsername(username);
        UserProfile userProfile = new UserProfile();
        // Setting fields to null or blanks here
        userProfile.setUsername(username);

        UserProfile savedUserProfile = userProfileRepository.insert(userProfile);
        URI uri = ServletUriComponentsBuilder.fromCurrentRequest().path("/users/{username}").buildAndExpand(savedUserProfile.getUsername()).toUri();
        ResponseEntity obj = ResponseEntity.created(uri).build();
        return obj.getStatusCode().equals("200");
    }
}



@Component
public class UserProfileGraphQLController implements GraphQLQueryResolver {

    private static final Logger logger = LoggerFactory.getLogger(UserController.class);

    @Autowired
    private UserRepository userRepository;

    @Autowired
    private UserProfileRepository userProfileRepository;

    @Transactional
    public UserProfile getUserProfile(String username) {
        logger.info("Fetching Profile for User: "+username);
        return userProfileRepository.findByUsername(username);
    }
}


但是,当我尝试使用邮递员查询它时,我收到 fieldUndefined 错误。我可以对应用程序中的其他实体使用类似的查询和突变。我用来创建它们的突变和查询是:

mutation {
    addUserProfile(username:"MummyGupta")
}

query {
    getUserProfile(username:"MummyGupta"){
        username
        posts
    }
}

接收中的错误是:

我想知道我做错了什么或错过了什么。感谢您阅读本文并尝试提前解决它!

标签: javaspringgraphql

解决方案


推荐阅读