2017-10-13 165 views
0

我使用Rails作为GraphQL后端,使用插件graphql-ruby。在前端大小上,我使用Apollo Client作为我的react/redux项目。无法从Apollo客户端发送GraphQL查询到Rails GraphQL后端

这里是我的前端侧:

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 
    } 
    } 
} 

这里是我的轨道路线的配置:

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) 

请告诉我,你有什么我错了?谢谢

@编辑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)); 

回答

0

在客户端,你命名你的查询allAuthorsallAuthors是GraphQL类型。您不必为您的查询命名为可选。但allAuthors是查询根的必需类型。

query allAuthors {查询始于此,当它应该是这样的query { allAuthors

+0

你能为我详细介绍一下吧。我不明白。 –

+0

我已更新,如您所说。问题仍然是一样的。我更新了我的问题以供查询。请看一下。 –