Я работаю с сервером graphql / apollo и Prisma Cloud и пытаюсь подключиться к моему новому клиенту реакции для добавления игроков в команду в клубе. Однако я получаю ошибку кода состояния 400. Я просматривал множество других похожих ошибок и пытался воспроизвести и исправить, но, похоже, не могу понять эту.
Вот мое приложение. js
import ApolloClient from 'apollo-boost';
import { ApolloProvider } from '@apollo/react-hooks';
//components
import TeamList from './components/TeamList'
import PlayerList from './components/PlayerList';
import AddPlayer from './components/AddPlayer';
import AddTeam from './components/AddTeam';
//apollo client setup
const client = new ApolloClient({
uri: 'http://localhost:4000'
});
class App extends Component {
render() {
return (
<ApolloProvider client={client}>
<div id="main">
<h1>Coach Ed</h1>
<TeamList/>
<PlayerList/>
<AddPlayer/>
<AddTeam/>
</div>
</ApolloProvider>
);
}
}
export default App;
Вот мой компонент Add Player:
class AddPlayer extends Component {
constructor(props){
super(props);
this.state = {
playername: "",
team: ""
};
}
displayTeams(){
var data = this.props.getTeamsQuery;
if(data.loading){
return( <option disabled>Loading teams</option> );
} else {
return data.teams.map(team => {
return( <option key={ team.id } value={team.id}>{ team.title }</option> );
});
}
}
Вот моя мутация добавления игрока
const addPlayerMutation = gql`
mutation{
createPlayer(playername: "", teamId: ""){
playername
id
}
}
`;
export { getPlayersQuery, getTeamsQuery, addPlayerMutation}
Вот информация о схеме с сервера
type Mutation {
createPlayer(data: CreatePlayerInput!): Player!
}
type Player {
id: ID!
playername: String!
coachcreator: User!
team: Team!
updatedAt: String!
createdAt: String!
}
input CreatePlayerInput {
playername: String!
team: ID!
}
Вот моя мутация создания игрока на сервере
async createPlayer(parent, args, { prisma, request }, info) {
const userId = getUserId(request)
const teamExists = await prisma.exists.Team({
id: args.data.team,
published: true
})
if (!teamExists) {
throw new Error('Unable to find team')
}
return prisma.mutation.createPlayer({
data: {
playername: args.data.playername,
coachcreator: {
connect: {
id: userId
}
},
team: {
connect: {
id: args.data.team
}
}
}
}, info)
},
Это ошибка, которую я получаю
Unhandled Rejection (Error): Network error: Response not successful: Received status code 400
и
POST http://localhost:4000/ 400 (Bad Request)
(anonymous) @ 0.chunk.js:7153
Subscription @ 0.chunk.js:72989
subscribe @ 0.chunk.js:73067
(anonymous) @ 0.chunk.js:6788
Subscription @ 0.chunk.js:72989
subscribe @ 0.chunk.js:73067
(anonymous) @ 0.chunk.js:5126
Subscription @ 0.chunk.js:72989
subscribe @ 0.chunk.js:73067
(anonymous) @ 0.chunk.js:5321
(anonymous) @ 0.chunk.js:5316
step @ 0.chunk.js:71481
(anonymous) @ 0.chunk.js:71412
(anonymous) @ 0.chunk.js:71385
__awaiter @ 0.chunk.js:71364
QueryManager.mutate @ 0.chunk.js:5256
ApolloClient.mutate @ 0.chunk.js:6626
MutationData.mutate @ 0.chunk.js:1303
MutationData._this.runMutation @ 0.chunk.js:1254
submitForm @ main.chunk.js:175
callCallback @ 0.chunk.js:40512
invokeGuardedCallbackDev @ 0.chunk.js:40561
invokeGuardedCallback @ 0.chunk.js:40614
invokeGuardedCallbackAndCatchFirstError @ 0.chunk.js:40629
executeDispatch @ 0.chunk.js:40714
executeDispatchesInOrder @ 0.chunk.js:40739
executeDispatchesAndRelease @ 0.chunk.js:43623
executeDispatchesAndReleaseTopLevel @ 0.chunk.js:43632
forEachAccumulated @ 0.chunk.js:43604
runEventsInBatch @ 0.chunk.js:43649```
плюс также
ncaught (in promise) Error: Network error: Response not successful: Received status code 400
at new ApolloError (0.chunk.js:4119)
at Object.error (0.chunk.js:5357)
at notifySubscription (0.chunk.js:72934)
at onNotify (0.chunk.js:72973)
at SubscriptionObserver.error (0.chunk.js:73030)
at 0.chunk.js:5134
at Set.forEach (<anonymous>)
at Object.error (0.chunk.js:5133)
at notifySubscription (0.chunk.js:72934)
at onNotify (0.chunk.js:72973)
at SubscriptionObserver.error (0.chunk.js:73030)
at Object.error (0.chunk.js:6827)
at notifySubscription (0.chunk.js:72934)
at onNotify (0.chunk.js:72973)
at SubscriptionObserver.error (0.chunk.js:73030)
at 0.chunk.js:7169
Я читал о добавлении 'cors', но почти все они связаны с работой с Express и не уверены, что то же самое применяются принципы. Также было некоторое обсуждение установки обработки ошибок Apollo, и я не мог понять, как реализовать это с импортом и версиями между версиями Apollo, являющимися проблемой.
Любая помощь с показанной выше ошибкой будет очень принята.