GraphQl上的无反应突变
当我对USEMUNTING注入值时,它会给我错误400 140。数据类型确实匹配。在“ timporment_booking”论点中,我将其ID传递给另一个表上的参考。 这是我的模式,
class CreateVideoConsultation(graphene.Mutation):
id = graphene.Int()
client = graphene.String()
veterinarian = graphene.String()
appointment_booking = graphene.Int()
class Arguments:
client = graphene.String()
veterinarian = graphene.String()
appointment_booking = graphene.Int()
def mutate(self, info, client, veterinarian, appointment_booking):
client_username = Client.objects.get(username = client)
veterinarian_username = Veterinarian.objects.get(username = veterinarian)
appointment_booking_id = Appointment_Booking.objects.get(id = appointment_booking)
video_consultation = Video_Consultation(client = client_username, veterinarian = veterinarian_username, appointment_booking = appointment_booking_id)
video_consultation.save()
return CreateVideoConsultation(id = video_consultation.id, client = client_username, veterinarian = veterinarian_username, appointment_booking = appointment_booking_id)
class Mutation (graphene.ObjectType):
create_video_consultation = CreateVideoConsultation.Field()
schema = graphene.Schema(query = Query, mutation = Mutation)
这是我的模型,
class Video_Consultation(models.Model):
client = models.ForeignKey('Client', on_delete = models.DO_NOTHING)
veterinarian = models.ForeignKey('Veterinarian', on_delete = models.DO_NOTHING)
appointment_booking = models.ForeignKey('Appointment_Booking', on_delete = models.DO_NOTHING)
def __str__(self):
return str(self.client)
这是我在GraphiQl中的突变,
mutation{
createVideoConsultation(client:"GGGG",veterinarian:"Peppermint",appointmentBooking:29){
id
client
veterinarian
appointmentBooking
}
}
{
"errors": [
{
"message": "int() argument must be a string, a bytes-like object or a real number, not 'Appointment_Booking'"
}
],
"data": {
"createVideoConsultation": {
"id": 7,
"client": "GGGG",
"veterinarian": "Peppermint",
"appointmentBooking": null
}
}
}
但是当查看django admin时,创建的数据出现
在这里我的gql
export const CREATE_VIDEO_CONSULTATION = gql`
mutation createVideoConsultation($client:String!,$veterinarian:String!,$appointmentBooking:Int!){
createVideoConsultation(client:$client,veterinarian:$veterinarian,appointmentBooking:$appointmentBooking){
id
client
veterinarian
appointmentBooking
}
}
`;
,这是我的usemuoning挂钩
const [CreateVideoConsultation] = useMutation(CREATE_VIDEO_CONSULTATION);
CreateVideoConsultation({
variables:{
client: sched.appointmentBooking.client.username,
veterinarian: sched.appointmentBooking.veterinarian.username,
appointment_booking: parseInt(sched.appointmentBooking.id)
}
})
When I am injecting values on useMutation it gives me Error 400 140. The data types does match. In appointment_booking argument, I am passing the its ID as a reference on the other table.
Here is my Schema
class CreateVideoConsultation(graphene.Mutation):
id = graphene.Int()
client = graphene.String()
veterinarian = graphene.String()
appointment_booking = graphene.Int()
class Arguments:
client = graphene.String()
veterinarian = graphene.String()
appointment_booking = graphene.Int()
def mutate(self, info, client, veterinarian, appointment_booking):
client_username = Client.objects.get(username = client)
veterinarian_username = Veterinarian.objects.get(username = veterinarian)
appointment_booking_id = Appointment_Booking.objects.get(id = appointment_booking)
video_consultation = Video_Consultation(client = client_username, veterinarian = veterinarian_username, appointment_booking = appointment_booking_id)
video_consultation.save()
return CreateVideoConsultation(id = video_consultation.id, client = client_username, veterinarian = veterinarian_username, appointment_booking = appointment_booking_id)
class Mutation (graphene.ObjectType):
create_video_consultation = CreateVideoConsultation.Field()
schema = graphene.Schema(query = Query, mutation = Mutation)
Here is my model
class Video_Consultation(models.Model):
client = models.ForeignKey('Client', on_delete = models.DO_NOTHING)
veterinarian = models.ForeignKey('Veterinarian', on_delete = models.DO_NOTHING)
appointment_booking = models.ForeignKey('Appointment_Booking', on_delete = models.DO_NOTHING)
def __str__(self):
return str(self.client)
Here is my mutation in Graphiql
mutation{
createVideoConsultation(client:"GGGG",veterinarian:"Peppermint",appointmentBooking:29){
id
client
veterinarian
appointmentBooking
}
}
{
"errors": [
{
"message": "int() argument must be a string, a bytes-like object or a real number, not 'Appointment_Booking'"
}
],
"data": {
"createVideoConsultation": {
"id": 7,
"client": "GGGG",
"veterinarian": "Peppermint",
"appointmentBooking": null
}
}
}
It returns an error with null appointment_booking
But when look at the django admin the data created appears
Here my gql
export const CREATE_VIDEO_CONSULTATION = gql`
mutation createVideoConsultation($client:String!,$veterinarian:String!,$appointmentBooking:Int!){
createVideoConsultation(client:$client,veterinarian:$veterinarian,appointmentBooking:$appointmentBooking){
id
client
veterinarian
appointmentBooking
}
}
`;
and Here is my useMutation Hook
const [CreateVideoConsultation] = useMutation(CREATE_VIDEO_CONSULTATION);
CreateVideoConsultation({
variables:{
client: sched.appointmentBooking.client.username,
veterinarian: sched.appointmentBooking.veterinarian.username,
appointment_booking: parseInt(sched.appointmentBooking.id)
}
})
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是我的错误,我忘记了我在石墨烯突变中使用的所有蛇形案例变量都成为阿波罗的骆驼盒。例如,create_video_consultation成为createvideoconcultation ...
It was my mistake I forgot that all of the snake case variables that I have use in graphene mutation becomes camel case in apollo. For example create_video_consultation becomes createVideoConsultation...