Condition groups
A filter is a group of conditions. Each item names a field, an operator, and a value. One condition (AND by default, or OR) governs how a group's items combine, and groups can nest for complex logic.
// (status = Active) AND (overdue OR high-value)
const { data } = await tada.records.list('invoices', {
filters: {
condition: 'AND',
items: [{ field_id: 'field_30', operator: 'is', val: 'Active' }],
child: [{
condition: 'OR',
items: [
{ field_id: 'field_22', operator: 'is before today' },
{ field_id: 'field_14', operator: 'higher than', val: 10000 },
],
}],
},
}); The operator catalog
Operators are exact, case-sensitive strings with real spaces. A few of the most useful:
| Operator | Use |
|---|---|
| is / is not | Exact match / exclusion. |
| contains | Substring match on text. |
| is blank / is not blank | Empty checks. |
| higher than / lower than | Numbers, currency, dates. |
| is today or after | Upcoming dates. |
| is before today | Overdue dates. |
| is during the previous | Relative window — pair with val2 (count) + val3 (days/weeks/months/years). |
| is logged in user | Match the current user on a User field — no value needed. |
Keyword search
Pass search for a keyword box — it ORs a "contains" across every searchable field on the table (text, name, email, phone, select, number, currency, join, equation, formula). Date, Time, Files, Decision-box, and Auto-increment fields are always excluded. Narrow it with searchFields.
tada.records.list('customers', { search: 'acme', searchFields: ['field_1', 'field_5'] });