-
Notifications
You must be signed in to change notification settings - Fork 10
Composant: Filter
Filtre un tableau de données. Seules les données qui passent le filtres seront passées au composant suivant.
Exemple : Si le filtre n'autorise que les données dont l'ID est de 2, il n'y aura donc que la donnée d'ID 2 qui passera au composant suivant.
Le composant Filter ne fonctionne que sur des tableaux d'objets.
Lorsqu'il n'y a qu'un seul champs à filtrer on peut procéder de cette manière : Ici seules les données n'ayant pas pour valeur "adresse" pour le champ "addressString" seront envoyées au composant suivant.
{
addressString {
$ne : adresse
}
}
"$eq" signifie égal à,
"$ne" n'est pas égal à,
"$exists" interroge sur l'existence d'un champ.
Pour avoir plusieurs conditions de filtrage ( pour un même champ ou pour des champs différents ), il faut utiliser un objet "$or" ou "$and" qui se décompose en un tableau de 2 ou plusieurs éléments.
"$and" permettra d'accumuler les filtres
"$or" permettra de choisir les données correspondantes à un des filtres.
Dans l'exemple ci-dessous seuls les objets dont le champ_1 vaut "Oui" mais le champ_2 ne vaut pas "Oui" seront sélectionnés.
{
"$and": [
{
"champ_1": {
"$eq": "Oui"
}
},
{
"champ_2": {
"$ne": "Oui"
}
}
]
}
Voici un autre exemple spécifiant que les objet error de l'objet address.lat ou adress.long ne doivent pas exister
{
$or [
{
adress.lat {
error {
$exists : false
}
}
},
{
adress.long {
error {
$exists : false
}
}
}
]
}
On peut également utiliser la clause $where
Dans ce cas, on utilisera le mot clé this pour accéder à l'objet évalué
Ici par exemple on vérifie que le champ mail n'est pas non défini :
{
$where : this.mail != undefined
}
Pour tester si les valeurs d'un champs n'ont pas une longueur nulle on peut faire :
{
$where : this.mail.length>0
}
et pour filtrer deux conditions on peut utiliser && :
{
$where : this.mail.length>0&&this.website.length>0
}
Utilise la syntaxe de la librairie loki (https://github.com/techfort/LokiJS/blob/master/tutorials/Query%20Examples.md) pour déterminer les conditions.
Il est possible d'utiliser deux composants Filter dans un workflow pour appliquer un traitement différent à des objets.
| Input => | Filter #1 => | Output #1 |
| Filter #2 => | Output #2 |