我是graphql-spqr 的新手,所以我希望这是一个简单的问题,但是即使经过长时间的搜索,我也找不到解决方案。
提示:在我的应用程序中,我使用 code-first/schema-last 方法,我喜欢graphql-spqr,因此没有从文件加载 schema.graphqls。
我的 User.java 以此开头
@Table(name = "users")
@Entity
@Setter
@Getter
@EntityListeners(AuditingEntityListener.class)
public class User {
@Id
@GraphQLQuery(name = "id", description = "A user's id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false, updatable = false)
public Long id;
@GraphQLQuery(name = "firstName", description = "User's first name")
@Column(name = "first_name")
public String firstName;
@GraphQLQuery(name = "lastName", description = "User's last name")
@Column(name = "last_name")
public String lastName;
@GraphQLQuery(name = "email", description = "User's email")
public String email;
@GraphQLQuery(name = "uuid", description = "User's uuid")
//@Type(type = "char")
public String uuid;
//@Type(type = "char")
@Transient
public Company company;
@Column(name = "company")
public Long companyId;
@Transient
public Role role;
@Column(name = "role")
public Long roleId;
@Column(name = "pw")
public String password;
@GraphQLQuery(name = "terms", description = "User accepted terms")
public Boolean terms;
@Transient
public String token;
@CreatedDate
public Instant created;
public String getUuid() {
return this.uuid;
}
public String getFirstName() {
return this.firstName;
}
public String getLastName() {
return this.lastName;
}
public String getEmail() {
return this.email;
}
public String getPassword() {
return this.password;
}
}
一个用户是由一个突变创建的:
@GraphQLMutation(name = "createUser")
public User createUser (
@GraphQLArgument(name = "firstName") String firstName,
@GraphQLArgument(name = "lastName") String lastName,
@GraphQLArgument(name = "email") String email,
@GraphQLArgument(name = "password") String password,
@GraphQLArgument(name = "company") String company,
@GraphQLArgument(name = "terms") Boolean terms) throws UserExistsException {
... some business logic
... and finally I use the JpaRepository<User, String> to save the user
return userRepository.save(user);
}
This is the query I am sending to the server
{"operationName":"CreateUser","variables":{"firstName":"Chris","lastName":"Rowing","email":"foo54@bar.com","password":"dada","company":"Test 5","terms":true,"source":"start","invitationId":null},"query":"mutation CreateUser($firstName: String!, $lastName: String!, $email: String!, $password: String!, $terms: Boolean!, $company: String) {\n createUser(\n firstName: $firstName\n lastName: $lastName\n email: $email\n password: $password\n terms: $terms\n company: $company\n ) {\n id\n __typename\n }\n}\n"}
新用户保存在数据库中,一切正常,在我的 Angular 客户端中,我监听了成功事件,在检查器中有以下输出
{"data":{"createUser":{"id":4,"__typename":"User"}}}
我的问题 如何自定义响应?例如,我还需要响应一个 JWT 令牌,并且可能隐藏 id。到目前为止,我还没有找到一种方法来做到这一点,任何帮助将不胜感激!谢谢!