graphql变异是否可以与查询一起连接到DataFetcher类中?
错误:字段未定义:类型“查询”中的字段“createUser”未定义@“createUser” 1.我不能同时使用通用datafetcher/reslover进行查询和变异吗 正如我在下面的一节课上所做的。它是无法找到的 createUser?graphql变异是否可以与查询一起连接到DataFetcher类中?,graphql,graphql-java,Graphql,Graphql Java,错误:字段未定义:类型“查询”中的字段“createUser”未定义@“createUser” 1.我不能同时使用通用datafetcher/reslover进行查询和变异吗 正如我在下面的一节课上所做的。它是无法找到的 createUser? @Component public class UserDataFetcher implements DataFetcher<List<User>> { @Autowired UserRepository userReposito
@Component
public class UserDataFetcher implements DataFetcher<List<User>> {
@Autowired
UserRepository userRepository;
public User createUser(DataFetchingEnvironment environment) {
String username = environment.getArgument("username");
String location= environment.getArgument("location");
User[] follower = environment.getArgument("followers");
User[] following = environment.getArgument("following");
Post[] pos = environment.getArgument("posts");
User user = new User();
user.setUsername(username);
user.setFollowers(follower);
user.setFollowing(following);
user.setLocation(location);
user.setPosts(pos);
return userRepository.save(user);
}
@Override
public List<User> get(DataFetchingEnvironment environment) {
return userRepository.findAll();
}
}
2.模式正确吗,因为它会说用户和帖子没有提到InputType。我尝试了用户和帖子的InputType,但是
无法使其工作。应如何更正存储的架构
追随者和追随者看起来像?1)不,每个DataFetcher
实现只能执行一个操作-这是接口指定的get
方法。框架如何知道调用createUser
方法
@Component
public class UserDataFetcher implements DataFetcher<List<User>> {
@Autowired
UserRepository userRepository;
public User createUser(DataFetchingEnvironment environment) {
String username = environment.getArgument("username");
String location= environment.getArgument("location");
User[] follower = environment.getArgument("followers");
User[] following = environment.getArgument("following");
Post[] pos = environment.getArgument("posts");
User user = new User();
user.setUsername(username);
user.setFollowers(follower);
user.setFollowing(following);
user.setLocation(location);
user.setPosts(pos);
return userRepository.save(user);
}
@Override
public List<User> get(DataFetchingEnvironment environment) {
return userRepository.findAll();
}
}
2) 否,架构无效。您不能将User
用作参数(输入)类型。您需要定义单独的输入类型,例如
input UserInput {
username:String!
followers:[ID!]
following:[ID!]
location:String!
}
试想一下,如果您可以将User
作为输入,您将如何提供强制ID?如果User
实现了一个接口,因为接口不是为输入定义的呢?想象一下如果User
有一个递归字段类型。在输出中,这很好(因为您直接控制嵌套级别),但不可能满足输入类型的要求
输入和输出的规则完全不同,因此需要分别定义类型
此外,在本例中,对于follower或followerd,只需要ID
s,而不是full对象,因为这通常更有意义
input UserInput {
username:String!
followers:[ID!]
following:[ID!]
location:String!
}