Disclaimer: I come from the Semantic Web area. Where the client language is SPARQL, and the (graph) database is exposed publicly and understands SPARQL. The data are exchanged in RDF (a kind of JSON for graph data).
A SPARQL query can federate data from several SPARQL endpoints (this is all the point of the LinkedData movement).
So we have NO additional layers between the DB and the client (except for some security features, and query throttling)
This is a simple pattern that makes data access trivial.
(if you manage to store your data in such a graph database, which is NOT trivial)
As far as I understand, if you follow a similar philosophy, then GraphQL will shine too (especially because the tooling on the client-side is infinitely superior with GraphQL, than it is with SPARQL).
But the more I read this HN thread, the more it seems GraphQL is used for service integration. And that is a completely different problem.
So, I feel like data access with GraphQL is super nice.
(especially if you use best practices for your data, like in the LinkedData principles)
But service integration sounds yet another hell.
(because services are rarely designed to be properly integrated together).