Skip to content
Guide/Filters and operators

Filters and operators

addFilter() takes a field and one or more values.

qb.addFilter('status', 'published');
qb.addFilter('id', 1, 2, 3); // multiple values
qb.deleteFilters('status');

How that renders is the driver’s business:

Strapi filters[status][$eq]=published
PostgREST status=eq.published
OData $filter=status eq 'published'
Spatie filter[status]=published

addFilterOperator() takes a FilterOperatorEnum.

import { FilterOperatorEnum } from '@qubeejs/core';
qb.addFilterOperator('price', FilterOperatorEnum.GTE, 10);
qb.addFilterOperator('price', FilterOperatorEnum.BTW, 10, 100);
qb.addFilterOperator('deletedAt', FilterOperatorEnum.NULL, true);
Operator Meaning Notes
EQ equals
NOT not equal
GT / GTE greater than / or equal
LT / LTE less than / or equal
IN matches any value takes several values
BTW between requires exactly two values
NULL is / is not null requires exactly one boolean
CONTAINS substring
ILIKE case-insensitive match
SW starts with
FTS / PHFTS / PLFTS / WFTS full-text search variants PostgREST

BTW and NULL have shape rules the library checks, so misuse fails loudly rather than producing an invalid request:

qb.addFilterOperator('price', FilterOperatorEnum.BTW, 10);
// InvalidFilterOperatorValueError: BTW requires exactly 2 values (min, max)

Thirteen of the eighteen drivers support explicit operators. The rest accept simple filters only:

qb.addFilterOperator('price', FilterOperatorEnum.GTE, 10);
// UnsupportedFilterOperatorError: The 'json-api' driver does not support filter operators.

Check the capability matrix before reaching for one.