mirror of
https://github.com/strapi/strapi.git
synced 2025-07-16 21:41:59 +00:00
126 lines
2.7 KiB
Markdown
126 lines
2.7 KiB
Markdown
![]() |
# Filters
|
||
|
|
||
|
See the [filters' concepts](../concepts/concepts.md#filters) for details.
|
||
|
|
||
|
::: note
|
||
|
by default, the filters can only be used from `find` endpoints generated by the Content Type Builder and the [CLI](../cli/CLI.md). If you need to implement a filters system somewhere else, read the [programmatic usage](#programmatic-usage) section.
|
||
|
:::
|
||
|
|
||
|
## Available operators
|
||
|
|
||
|
The available operators are separated in four different categories:
|
||
|
- [Filters](#filters)
|
||
|
- [Sort](#sort)
|
||
|
- [Limit](#limit)
|
||
|
- [Start](#start)
|
||
|
|
||
|
### Filters
|
||
|
|
||
|
Easily filter results according to fields values.
|
||
|
|
||
|
- `=`: Equals
|
||
|
- `_ne`: Not equals
|
||
|
- `_lt`: Lower than
|
||
|
- `_gt`: Greater than
|
||
|
- `_lte`: Lower than or equal to
|
||
|
- `_gte`: Greater than or equal to
|
||
|
- `_contains`: Contains
|
||
|
- `_containss`: Contains case sensitive
|
||
|
- `_in`: Matches any value in the array of values
|
||
|
- `_nin`: Doesn't match any value in the array of values
|
||
|
|
||
|
#### Examples
|
||
|
|
||
|
Find users having `John` as first name.
|
||
|
|
||
|
`GET /user?firstName=John`
|
||
|
|
||
|
Find products having a price equal or greater than `3`.
|
||
|
|
||
|
`GET /product?price_gte=3`
|
||
|
|
||
|
### Sort
|
||
|
|
||
|
Sort according to a specific field.
|
||
|
|
||
|
#### Example
|
||
|
|
||
|
Sort users by email.
|
||
|
|
||
|
- ASC: `GET /user?_sort=email:asc`
|
||
|
- DESC: `GET /user?_sort=email:desc`
|
||
|
|
||
|
### Limit
|
||
|
|
||
|
Limit the size of the returned results.
|
||
|
|
||
|
#### Example
|
||
|
|
||
|
Limit the result length to 30.
|
||
|
|
||
|
`GET /user?_limit=30`
|
||
|
|
||
|
### Start
|
||
|
|
||
|
Skip a specific number of entries (especially useful for pagination).
|
||
|
|
||
|
#### Example
|
||
|
|
||
|
Get the second page of results.
|
||
|
|
||
|
`GET /user?_start=10&_limit=10`
|
||
|
|
||
|
## Programmatic usage
|
||
|
|
||
|
Requests system can be implemented in custom code sections.
|
||
|
|
||
|
### Extracting requests filters
|
||
|
|
||
|
To extract the filters from an JavaScript object or a request, you need to call the [`strapi.utils.models.convertParams` helper](../api-reference/reference.md#strapiutils).
|
||
|
|
||
|
::: note
|
||
|
The returned objects is formatted according to the ORM used by the model.
|
||
|
:::
|
||
|
|
||
|
#### Example
|
||
|
|
||
|
**Path —** `./api/user/controllers/User.js`.
|
||
|
|
||
|
```js
|
||
|
// Define a list of params.
|
||
|
const params = {
|
||
|
'_limit': 20,
|
||
|
'_sort': 'email'
|
||
|
};
|
||
|
|
||
|
// Convert params.
|
||
|
const formattedParams = strapi.utils.models.convertParams('user', params); // { limit: 20, sort: 'email' }
|
||
|
```
|
||
|
|
||
|
### Query usage
|
||
|
|
||
|
#### Example
|
||
|
|
||
|
**Path —** `./api/user/controllers/User.js`.
|
||
|
|
||
|
```js
|
||
|
module.exports = {
|
||
|
|
||
|
find: async (ctx) => {
|
||
|
// Convert params.
|
||
|
const formattedParams = strapi.utils.models.convertParams('user', ctx.request.query);
|
||
|
|
||
|
// Get the list of users according to the request query.
|
||
|
const filteredUsers = await User
|
||
|
.find()
|
||
|
.where(formattedParams.where)
|
||
|
.sort(formattedParams.sort)
|
||
|
.skip(formattedParams.start)
|
||
|
.limit(formattedParams.limit);
|
||
|
|
||
|
// Finally, send the results to the client.
|
||
|
ctx.body = filteredUsers;
|
||
|
};
|
||
|
};
|
||
|
```
|