# filterDocuments 🆕

{% hint style="info" %}

```typescript
Throws `errorNoCriteriaProvided` if props are empty.
```

{% endhint %}

**Signature**

{% tabs %}
{% tab title="MySQL" %}

```javascript
filterDocuments(session: MySQLSession, props: Partial<IDocument<S>>, join?: 'OR' | 'AND', pagination?: IOffsetPagination, sort?: Sort): Promise<IPaginatedSet<IDocument<S>>>;
```

{% endtab %}

{% tab title="MySQLX" %}

```javascript
filterDocuments(session: MySQLXSession, props: Partial<IDocument<S>>, join?: 'OR' | 'AND', pagination?: IOffsetPagination, sort?: Sort): Promise<IPaginatedSet<IDocument<S>>>;
```

{% endtab %}
{% endtabs %}

**Example**

{% tabs %}
{% tab title="MySQL" %}

<pre class="language-javascript"><code class="lang-javascript">// employeeRouter.{ts|js}
import { OffsetPagination } from 'crud-node';
import { employeeController } from './employeeController';

const transacted = true;

await db.usingSession(async (session) => {
  const pagination = OffsetPagination(1, 10);
<strong>  const data = await employeeController.filterDocuments(session, { fired: true }, 'AND', pagination);
</strong>  return data;
}, transacted);
</code></pre>

{% endtab %}

{% tab title="MySQLX" %}

```javascript
// employeeRouter.{ts|js}
import { OffsetPagination } from 'crud-node';
import { employeeController } from './employeeController';

const transacted = true;

await db.usingSession(async (session) => {
  const pagination = OffsetPagination(1, 10);
  const data = await employeeController.filterDocuments(session, { fired: true }, 'AND', pagination);
  return data;
}, transacted);
```

{% endtab %}
{% endtabs %}
