Making Queries
A GraphQL query is a request that can be sent to a GraphQL server in combination with a set of variables, in order to fetch some data. It consists of a selection of fields, and potentially includes other fragments.
To fetch and render a query in Svelte Relay, you can use the getQuery()
function. This function accepts a GraphQL query. Let's set up our first query and a component to display the data:
<script> import { getQuery, graphql } from 'svelte-relay'; const query = getQuery(graphql` query UserQuery { currentUser { id firstName lastName } } `);</script>
info
After creating this file, you will need to run the relay-compiler
to process the newly-created GraphQL query and generate the appropriate files.
To consume the data from the query, we can use the Svelte await block. This allows us to wait for a Promise to resolve, and display different UIs based on the error or loading state.
{#await $query}<div>Loading...</div>{:then data}<h1>{data.currentUser.firstName} {data.currentUser.lastName}</h1>{:catch error}<div>Error: {error.message}</div>{/await}
The return value of getQuery()
is a Svelte Store. By prefixing it with $
, we automatically subscribe to the latest data from the GraphQL query.
#
Passing VariablesThe getQuery()
method accepts a second argument, which is the variables to provide to the query.