Directus API : requête multiples

Bonjour,

Savez-vous comment je peux récupérer une liste en fonction de plusieurs critères ? car avec :

 _myMusic =
          List<MusicModel>.from(await _apiManager.findListOfItems<MusicModel>(
              filter: PropertyFilter(
                  field: "exploitant",
                  operator: FilterOperator.equals,
                  value: _directusUser.id),
              ));
      return _myMusic.toList();

J’obtiens une première List, mais je dois ensuite la filtrer en fonction d’autres paramètres (3), ce qui reviendrait à produire 3 requêtes et à filtrer avec des For… mais il doit forcément y avoir plus simple non ? car ajouter plusieurs filtres dans la première requête n’est pas possible.

Merci !

Oui c’est prévu. Il faut que tu utilises un LogicialOperatorFilter. Cet objet est une sous classe de Filteret il a deux propriétés :

  • operator qui attend un LogicalOperator. Il n’y en a que deux LogicalOperator.or pour les « ou » et LogicalOperator.and pour les « et »

  • children qui attend une liste de Filter

Par exemple, comme ci-dessous :

final Filter filter = LogicalOperatorFilter(
                      operator: LogicalOperator.or,
                      children: [
                PropertyFilter(
                    field: "requestor",
                    operator: FilterOperator.equals,
                    value: _connectedUser!.id),
                PropertyFilter(
                    field: "receiver",
                    operator: FilterOperator.equals,
                    value: _connectedUser!.id),
              ]));

ce filtre va me trouver tous les items de ma collection si requestor est égale à l’id de mon utilisateur ou si receiver est égale à l’id de mon utilisateur.

Merci @jmjoary ! Je vais jouer avec ça cet après-midi !

Mickaël.