Directus api manager : getSpecificItem pour DirectusUser

Bonjour à tous,

Je cherche à construire une liste de DirectusUser dans mon code (autre que le currentUser). Pour ca j’utiliser l’UUID de ces DirectusUser dans une boucle for pour créer ma liste :

final playerList = await _remoteDataManager.directusApiManager
        .findListOfItems<PlayerDirectusModel>();
final userList = await _remoteDataManager.directusApiManager
        .findListOfItems<DirectusUser>();
for (final player_directus_model in playerList) {
   final DirectusUser userPlayer = await _userList.getSpecificItem(id: player_directus_model.playerid);
...
}

En effet j’ai besoin de séparer mes tables user et player pour certains champs (le "playerid fait le lien entre les deux tables). La méthode getSpecicItem n’est pas reconnue ici. Savez vous pourquoi ?

Bonjour Xavier,

En lisant ton code, je pense avoir trouvé l’erreur (ou plutôt ce qu’il manque). Il faut que tu précises le genre de ton « specificItem » juste après specificItem. Le code devrait donner cela à mon sens:

final DirectusUser userPlayer = await _userList.getSpecificItem<DirectusUser>(id: player_directus_model.playerid);

Du coup, pour alléger, je pense que tu peux enlever DirectusUser après ton final. Ce qui donnerait :

final userPlayer = await _userList.getSpecificItem<DirectusUser>(id: player_directus_model.playerid);

En espérant que cela fonctionne pour toi.

1 « J'aime »

Hello Benoit ! Merci pour ton aide :slight_smile: Effectivement ca semble mieux marcher :slight_smile: Plus de rouge.
Je me rends compte que j’ai aussi écris dans ma question quelque chose qui ne marche pas : j’essayais d’appliquer le getSpecificItem à une liste de DirectusUser chargés auparavant, hors en reprenant la doc de Maxime je vois qu’il applique directement le getSpecificItem à l’apimanager

Du coup ce que je ne suis pas sur de comprendre c’est de savoir comment il sait quel type d’objet aller chercher parmi toutes les tables si on ne lui dit pas dans laquelle aller chercher. Une idée ? :slight_smile:

Ah oui, j’avais pas fait attention à ça.

En fait le type d’objet est celui que tu précises entre les sigles « <DirectusUser ». Du coup Directus balaie cette table pour rechercher ton id.
Au final ton code devrait ressembler à ça :

final userPlayer = await _remoteDataManager.directusApiManager.getSpecificItem<DirectusUser>(id: player_directus_model.playerid);

A suivre…

1 « J'aime »

En tout cas ça marche ! Les données se chargent :+1::+1: