# sails-advanced-filter

> Advanced filter for Sails.js

Latest version **0.2.3** (published 2018-04-26) · ISC license · 0 weekly downloads

## Install

```sh
npm install sails-advanced-filter
pnpm add sails-advanced-filter
yarn add sails-advanced-filter
bun add sails-advanced-filter
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.2.3 |
| Published | 2018-04-26 |
| First published | 2018-04-26 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 113.2 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Bruno Haveroth |
| Maintainers | bruno.haveroth |

## Links

- npm: https://www.npmjs.com/package/sails-advanced-filter
- npm.io page: https://npm.io/package/sails-advanced-filter

## Dependencies (1)

- [lodash](https://npm.io/package/lodash.md) ^4.16.4

## Recent versions

- 0.2.3 (latest) — 2018-04-26

## README

# sails-advanced-filter

This module uses [waterline-sequel](https://github.com/balderdashy/waterline-sequel) criteriaProcessor.js.
Este módulo utiliza o criteriaProcessor.js do [waterline-sequel](https://github.com/balderdashy/waterline-sequel).

### Módulo permite filtrar registros por valores de colunas de tabelas ligadas por relacionamento.

No exemplo abaixo, o req.query contém uma criteria que tenta filtrar pelo nome do pet, o qual é um relacionamento da tabela User:

```javascript
const AdvancedFilter = require('sails-advanced-filter');

/* req.query:
{
  'firstName': { contains: 'J' },
  'pet.name' : { contains: 'filtro por nome do pet' }
}
*/

return AdvancedFilter
.findQueryIds(req)
.then((ids)=> {
  /* Se o req.query tem consultas por colunas de tabelas de relacionamento, retorna os ids dos registros
  filtrados, caso contrário apenas retorna o valor req.query sem fazer a consulta.*/
  
  User
  .find(ids)
  .then((users)=> {
    // Registros filtrados
  });
});
```

Módulo também permite processar a criteria CONCAT, exemplo:

```javascript
/* req.query:
{
  'concat': { 
    fields: ['firstName', 'lastName'] ,
    separator: ' ',
    contains: 'J' // funciona tambem com: startWith, endWith, equal
   }
}
*/

return AdvancedFilter
.findQueryIds(req)
...
```

Neste exemplo o filtro será aplicado na concatenação do firstName com o lastName;

---
_Source: https://npm.io/package/sails-advanced-filter · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
