【发布时间】:2021-04-17 03:30:40
【问题描述】:
我能够让 graphql 在客户端和服务器 graphql 操场上正常工作。但是,当我尝试在客户端文件中调用突变时,我最终得到Error: Response not successful: Received status code 400,并且在网络选项卡中我被告知Variable \"$ParkingSpaces\" is not defined by operation \"saveParkingLot\"。假设突变接受一个对象数组。
typeDef 是:
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" },
],
});
};
我哪里做错了?
【问题讨论】: