Use result for first query in second query with Apollo Client?
If you import compose like so:
import { graphql, compose } from 'react-apollo';
Then you can pass the props to the second query with this:
const LoginServerQuery = gql`
query LoginServerQuery {
loggedInUser {
id
}
}
`;
const LocationsQuery = gql`
query LocationsQuery($userId: ID) {
User(id: $userId) {
name
location {
machineName
}
}
}
`;
export default compose(
graphql(LoginServerQuery, { name: 'LoginServerQuery' }),
graphql(LocationsQuery, {
name: 'LocationsQuery',
options: ownProps => ({
variables: {
userId: ownProps.LoginServerQuery.loggedInUser.id,
},
}),
}),
)(LocationsPage);
UPDATE - Actually this isn't working well. If Im on a different page, I refresh, then navigate to this page it errors. However If I then refresh when on this page it works fine.
UPDATE - I think it was a Graphcool issue. The other page that I was refreshing on was also returning the User. I needed to return the ID for the User in both React components, otherwise the caching got confused. After adding the ID field it now works.
https://www.graph.cool/forum/t/the-store-already-contains-an-id-of/218