我一直在Django中使用带有graphql和React前端的石墨烯。
我可以创建一个create突变,但是不能进行编辑-即使没有$变量的查询在graphiQL中也可以工作
我在React中的gql常量是:
export const EDIT_PERSON = gql`
mutation personEdit($id: id, $input: PersonInputType!) {
personEdit(id: id, input: $input) {
person {
id
}
}
}
`;
id是通过处理程序设置的,表单中的Submit函数如下所示:
<form
autoComplete="off"
onSubmit={e => {
e.preventDefault();
editPerson({
variables: {
id: id,
input: {
firstName: firstName,
lastName: lastName,
address: address
}
}
});
}}
>
我在Django中的PersonEdit突变如下:
class PersonEdit(Mutation):
class Arguments:
id = ID(required=True)
input = PersonEditInputType(required=True)
person = Field(PersonType)
@classmethod
def mutate(cls, root, info, **data):
serializer = PersonSerializer(data=data.get('input'))
serializer.is_valid(raise_exception=True)
person = Person.objects.get(id=data.get('id'))
print("PERSON", serializer.data)
person.first_name = serializer.data['first_name']
person.last_name = serializer.data['last_name']
person.address = serializer.data['address']
return PersonEdit(person=person.save())
为什么编辑不起作用?
答案 0 :(得分:1)
您的突变应该像这样
export const EDIT_PERSON = gql`
mutation personEdit($id: ID!, $input: PersonInputType!) {
personEdit(id: $id, input: $input) {
person {
id
}
}
}
`;
此处应为id: $id
而不是id: id
。