Pre-Requisites

  • This Article shows the Answers to a Challenge. If you've not had a go at the challenge yet, we'd recommend you head there first.
  • About GraphQL- optional- Read more about GraphQL and when it might be best used.

Challenge Answers

The trick here was to examine the model_schema_names  and spot the common patterns in their values. 

The two types of models we wanted had values:

  • webapp_1
  • webapp_2

The types of models we don't want have values without that string, for example:

  • module_3 - (Blog Module)
  • module_14 - (eCommerce Module)
  • form_1 - Newsletter Sign Up Form Submissions

So, in order to filter for the models we do want and not the models we don't want, we need models which start with the string webapp_

query get_all_webapps {
  models(
    page: 1
    per_page: 20
    filter: {
      model_schema_name: {
        starts_with: "webapp_"
      }
    }
  ) {
    total_pages
    results {
      model_schema_name
      properties
    }
  }
}


Notes:

  • In this method, there is no need to write one filter to include webapp items and another to remove module and form items from the Results. This is because the given rule efficiently achieves both at once.


This is just one possible answer, you may have found a different method. 

Try and make sure you choose the best method for your use case. You should always be looking out for a more efficient way of doing things.

Next Time

We'll continue to look at filtering queries in more detail, including:

  • filtering by different fields, or properties
  • filtering with different kinds of rules
  • using more than one filter at once

Let's go: http://siteglide.support/en/articles/3723246-learning-graphql-tutorial-4-advanced-filtering


Did this answer your question?