How to Query the API

In order to retrieve the content from your repository, you will need to query the repository API. When you create your query you will specify exactly what it is you are looking for. You could query the repository for all the documents of certain type or retrieve the one specific document you need.

The Basics

When retrieving content from your Prismic repository inside a Vue component, here's what a typical query looks like:

Copy
this.$prismic.client.query(
  this.$prismic.Predicates.at('document.type', 'blog_post'),
  { orderings : '[my.blog_post.date desc]' }
).then((response) => {
  // response is the response object, response.results holds the documents
})

Predicates

Predicates are a powerful way to query your content. In the above example we had the following predicate:

You will find a list and description of the available paths on the Query Predicate Reference page.

Copy
this.$prismic.Predicates.at('document.type', 'blog_post')

The predicate(s) will define which documents are retrieved from the content repository. This particular example will retrieve all of the documents of the type "blog_post".

The first part, "document.type" is the path, or what the query will be looking for. The second part the predicate in the above example is "blog_post" this is the value that the query is looking for.

You can combine more than one predicate together to refine your query. You just need to put all your predicates into a comma-separated array like the following example:

Copy
[ this.$prismic.Predicates.at('document.type', 'blog_post'),
  this.$prismic.Predicates.at('document.tags', ['featured']) ]

This particular query will retrieve all the documents of the "blog_post" type that also have the tag "featured".

Options

In the second part of the query, you can include the options needed for that query. In the above example we had the following options:

Copy
{ orderings : '[my.blog_post.date desc]' }

This specifies how the returned list of documents will be ordered. You can include more than one option, by comma separating them as shown below:

Copy
{ pageSize : 10, page : 2 }

Pagination of API Results

When querying a Prismic repository, your results will be paginated. By default, there are 20 documents per page in the results. You can read more about how to manipulate the pagination in the Pagination for Results page.

A more complex example

Here's another example of a more advanced query with multiple predicates and multiple options:

Copy
this.$prismic.client.query(
  [ this.$prismic.Predicates.at('document.type', 'blog_post'),
    this.$prismic.Predicates.at('document.tags', ['featured']) ], 
  { pageSize : 25, page : 1, orderings : '[my.blog_post.date desc]' }
).then((response) => {
  // response is the response object, response.results holds the documents
})

Whenever you query your content, you end up with the response object stored in the defined variable. In this case the response object is stored in the response variable.