Retrieving data¶
The JSON based query language lets you make simple to complex queries.
Selecting data¶
Let’s look at a simple select query on the article table.
The full syntax of a select query can be found here.
query fetch_article {
article (where: {is_published: {_eq: true}}) {
id
title
}
}
POST data.<cluster-name>.hasura-app.io/v1/query HTTP/1.1
Content-Type: application/json
Authorization: Bearer <auth-token> # optional if cookie is set
X-Hasura-Role: <role> # optional. Pass if only specific user role has access
{
"type" : "select",
"args" : {
"table" : "article",
"columns": ["id", "title"],
"where": {"is_published": true}
}
}
Syntactic sugar
{ "is_published": true }
is just a shortcut for writing the ‘is-equal-to’ operator, $eq
{ "is_published": { "$eq": true } }
This query returns id and title of rows from article table where is_published is true.
Boolean operators like $and, $or, $not can be used in a where clause. See this for a full list of supported Boolean operators.
query fetch_article {
article (where: {_and: [ {is_published: {_eq: true}}, {author_id: {_eq: 6}}]}) {
id
title
}
}
POST data.<cluster-name>.hasura-app.io/v1/query HTTP/1.1
Content-Type: application/json
Authorization: Bearer <auth-token> # optional if cookie is set
X-Hasura-Role: <role> # optional. Pass if only specific user role has access
{
"type" : "select",
"args" : {
"table" : "article",
"columns": ["id", "title"],
"where": {
"$and" : [
{"is_published": true},
{"author_id" : 6}
]
}
}
}
Syntactic sugar
The where clause in the above query can be simplified as :
{
"is_published": true,
"author_id" : 6
}
order_by is used to sort the results by a column. A prefix of + or - indicates ascending or descending order respectively. limit and offset are used to slice the result set.
Example,
query fetch_article {
article (where: {is_published: {_eq: true}}, limit:10, order_by: ["+author_id"]) {
id
title
}
}
POST data.<cluster-name>.hasura-app.io/v1/query HTTP/1.1
Content-Type: application/json
Authorization: Bearer <auth-token> # optional if cookie is set
X-Hasura-Role: <role> # optional. Pass if only specific user role has access
{
"type" : "select",
"args" : {
"table" : "article",
"columns": ["id", "title"],
"where": {"is_published": true},
"order_by" : "+author_id",
"limit" : 10
}
}
Counting data¶
Now let’s look at a simple count query on the article table.
The full syntax of a count query can be found here.
POST data.<cluster-name>.hasura-app.io/v1/query HTTP/1.1
Content-Type: application/json
Authorization: Bearer <auth-token> # optional if cookie is set
X-Hasura-Role: <role> # optional. Pass if only specific user role has access
{
"type" : "count",
"args" : {
"table" : "article",
"where": {"is_published": true}
}
}
This query returns the count of rows from article table where is_published is true.