Closed alakdam07 closed 4 years ago
How did you fix ?
I forget it, What was the problem and how did I fixed it?
can you check your resolver name for that exact query?
<----backend---->
export const resolvers = {
Query: {
list: ()=> List.find()
}
}
<-----frontend------>
client
.query({
query: gql query { list { id name } }
})
.then(result => console.log(result));
resolver name must be same. this works for me
The best idea to solve errors like this is to run your Query under the playground.
Example: I got this error for this scenario.
The API schema excepted speakerId
Arguments.
But I created helloError
instead (In the "real world" it could be speakerid
or speaker_Id
instead of speakerId
:
const FEATURED_SPEAKER = gql`
mutation markFeatured($speakerId: ID!, $featured: Boolean!){
markFeatured(helloError: $speakerId , featured: $featured){
id
featured
}
}
Under The playground this is the error:
I run the mutation on click (But the mutation throw error):
const [ markFeatured ] = useMutation(FEATURED_SPEAKER);
...rest of the code
onClick={ async() => {
await markFeatured({ variables: {
speakerId: id, featured: true
}})
}}
The console also throw an error:
Uncaught (in promise) Error: Response not successful: Received status code 400
One more way to debug the same issues is by chrome network tab (Again compare your Payload
to API):
This is my App.js
import React from "react"; import { ApolloClient, HttpLink, InMemoryCache } from "apollo-boost"; import { ApolloProvider } from "react-apollo"; import "./App.css"; import Post from "./components/Post"; import Addpost from "./components/Addpost";
const client = new ApolloClient({ link: new HttpLink({ uri: "http://localhost:5000/graphql" }), cache: new InMemoryCache() }); function App() { return (
); }
export default App;
This is Addpost.js import React, { Component } from "react"; import { gql } from "apollo-boost"; import { graphql } from "react-apollo"; import { flowRight as compose } from "lodash";
const getPerson = gql
{ person { firstname lastname email } }
;const addPostMutation = gql
mutation { addpost(title: "", content: "", personid: "") { title id } }
;export class Addpost extends Component { state = { title: " ", content: " ", personid: " " };
handleChange = e => { //console.log(e.target.value); this.setState({ [e.target.id]: e.target.value }); }; handleSubmit = e => { e.preventDefault(); //console.log(this.state); this.props.addPostMutation(); }; render() { //console.log(this.props); //const{data}= this.props //this one fetch the data const { getPerson } = this.props;
} }
export default compose( graphql(getPerson, { name: "getPerson" }), graphql(addPostMutation, { name: "addPostMutation" }) )(Addpost);
Its run fine when I fetch the data but when I add new post it gives me error. What I am doing wrong?