![](/img/trans.png)
[英]Object as input variable in mutation: GraphQL - Apollo - React
[英]Apollo GraphQL mutation: Variable is not defined by operation
我能够让 graphql 在客户端和服务器 graphql 操场上正常工作。 但是,当我尝试在客户端文件中调用突变时,我最终得到Error: Response not successful: Received status code 400
并且在网络选项卡中,我被告知Variable \"$ParkingSpaces\" is not defined by operation \"saveParkingLot\"
。 假设突变接受一组对象。
typeDefs 是:
type ParkingSpace {
id: Int!
ownerID: String!
parkingID: String!
}
input ParkingSpaces {
id: String!
ownerID: String!
parkingID: String!
}
type Mutation {
saveParkingLot(parkingLot: [ParkingSpaces]): [ParkingSpace]!
}
解析器正在从数据库中删除现有信息,然后保存新信息
saveParkingLot: async (_, args) => {
ParkingSpace.collection.drop();
const parkingArray = new ParkingSpace({
parkingLot: args.parkingLot,
});
parkingArray.save();
return args.parkingLot;
},
},
但是代码在客户端上失败了。 我在variables:
中省略了{}
:因为它由于某种原因会产生语法错误
const SAVE_PARKING_LOT = gql`
mutation saveParkingLot($parkingLot: ParkingSpaces!) {
saveParkingLot(parkingLot: $ParkingSpaces) {
id
ownerID
parkingID
}
}
`;
const [saveParkingLot] = useMutation(SAVE_PARKING_LOT, {
onError(err) {
console.log(err);
},
});
//Mutation fails when called
const saveParkingLotButton = () => {
saveParkingLot({
variables: [
{ id: "0", ownerID: "0", parkingID: "0" },
{ id: "1", ownerID: "1", parkingID: "1" },
{ id: "2", ownerID: "2", parkingID: "2" },
{ id: "3", ownerID: "3", parkingID: "3" },
],
});
};
我在哪里 go 错了?
将您的客户端查询更改为:
mutation saveParkingLot($parkingLot: [ParkingSpaces]) {
saveParkingLot(parkingLot: $parkingLot) {
id
ownerID
parkingID
}
}
并在变量部分使用如下:
variables: {
parkingLot: [
{ id: "0", ownerID: "0", parkingID: "0" },
{ id: "1", ownerID: "1", parkingID: "1" },
{ id: "2", ownerID: "2", parkingID: "2" },
{ id: "3", ownerID: "3", parkingID: "3" },
]
},
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.