在后端定义的枚举是:
enum Gender {
MALE
FEMALE
}
我将 Vue 用于前端,因此可以像这样将数据从 Vue 传递给突变。
我在组件的本地状态中将性别定义为字符串:
data(){
return {
gender: ''
}
}
来自 Vue 的方法是:
async handleEditProfile () {
const response = await this.$apollo.mutate({
query: EDIT_PROFILE,
variables: {
nameAsInPan: this.nameAsInPan,
gender: this.gender,
dateOfBirth: this.dateOfBirth
}
})
}
在 EDIT_PROFILE 上使用的突变:
gql`mutation editProfile($name: String!, $email: String!,$phone: String!, $gender: Gender!, $dateOfBirth: String!) {
editProfile (profileInput:{name: $name, email: $email, phone: $phone, gender: $gender, dateOfBirth: $dateOfBirth}){
id
email
phone
firstName
lastName
nameAsInPan
gender
dateOfBirth
}
}
`
使用突变中定义的枚举变量名并将其发送到 Graphql,就像我使用的性别一样
$gender: Gender! 在 gql 突变中。您不必担心以枚举形式发送数据,只需将其作为字符串发送,否则您将不得不面对 JSON 错误,Graphql 将处理您作为字符串发送的值(例如 'MALE ' 或 'FEMALE') 只是不要忘记提及性别是 gql 突变中的性别类型(即枚举),就像我在上面所做的那样。