无法从Apollo Client向Rails GraphQL后端发送GraphQL查询

时间:2017-10-13 17:57:20

标签: ruby-on-rails graphql apollo react-apollo graphql-ruby

我使用插件graphql-ruby将Rails用作GraphQL后端。在前端大小,我正在使用Apollo Client作为我的react / redux项目。

这是我的前端:

const networkInterface = createNetworkInterface({
  uri: 'http://localhost:4001/graphql',
});
export const apolloClient = new ApolloClient({ networkInterface });

在我的后端,我已成功测试http://localhost:4001/graphiql上的查询。

query{
  allAuthors{
    full_name,
    books{
      book_name,
      book_description,
      isbn
    }
  }
}   

这是我的rails route config:

if Rails.env.development?
    mount GraphiQL::Rails::Engine, at: "/graphiql", graphql_path: "/graphql"
  end

  post "/graphql", to: "graphql#execute"

我尝试从前端获取类似数据。这是我的代码:

    const ALL_AUTHORS_QUERY = gql`
      query allAuthors {
        full_name,
        books{
          book_name,
          book_description,
          isbn
        }
      }
    `;
    apolloClient
      .query({
        query: ALL_AUTHORS_QUERY,
      })
      .then(response => console.log(response.data));
  }

但在那之后,我遇到以下异常:

POST http://localhost:4001/graphql 422 (Unprocessable Entity)

请告诉我,我错了什么?感谢

@Edit 1: 我也尝试在客户端上进行不同的查询,但问题仍然相同。

   const ALL_AUTHORS_QUERY = gql`
  query {
    allAuthors {
      full_name
      books {
        book_name
        book_description
        isbn
      }
    }
  }
`;
apolloClient
  .query({
    query: ALL_AUTHORS_QUERY,
  })
  .then(response => console.log(response.data));

1 个答案:

答案 0 :(得分:0)

在客户端,当allAuthors是GraphQL类型时,您已将查询命名为allAuthors。您不必将您的查询命名为可选的。但是,allAuthors是查询根目录的必需类型。

query allAuthors {您的查询从此开始,它应该像query { allAuthors

一样