Flutter
...
Data Objects
Créer des Relations 1:N avec Parse dans Flutter
16 min
relation un à plusieurs sur flutter introduction en utilisant parse, vous pouvez stocker des objets de données établissant des relations entre eux pour modéliser ce comportement, tout parseobject parseobject peut être utilisé comme valeur dans d'autres parseobject parseobject en interne, le framework parse stockera l'objet référencé à un seul endroit, pour maintenir la cohérence cela peut vous donner un pouvoir supplémentaire lors de la construction et de l'exécution de requêtes complexes il existe trois principaux types de relations un à un un à un , établissant des relations directes entre deux objets et seulement eux ; un à plusieurs un à plusieurs , où un objet peut être lié à plusieurs autres objets ; plusieurs à plusieurs plusieurs à plusieurs , ce qui peut créer de nombreuses relations complexes entre de nombreux objets dans ce guide, nous allons détailler comment la relation un à plusieurs relation un à plusieurs fonctionne en utilisant un exemple d'application pratique il existe deux façons de créer une relation un à plusieurs relation un à plusieurs dans parse la première consiste à utiliser les pointeurs pointeurs dans classe enfant classe enfant , ce qui est le plus rapide en termes de création et de temps de requête la seconde consiste à utiliser des tableaux tableaux de pointeurs pointeurs dans la classe parent, ce qui peut entraîner des temps de requête lents en fonction de leur taille en raison de ce problème de performance, nous n'utiliserons que des exemples de pointeurs vous allez implémenter une application d'enregistrement de livres flutter et créer et interroger des objets liés en utilisant les pointeurs pointeurs la relation en tant que un à un un à un n'est pas courante et nous ne l'aborderons pas dans nos guides par exemple, une relation entre la classe utilisateur et une autre classe qui contiendra des données utilisateur sensibles pour des raisons de sécurité https //blog back4app com/parse server best practices/ ( 1 4 ne laissez pas les utilisateurs accéder aux données sensibles des autres ) conditions préalables version de flutter 2 2 x ou ultérieure https //flutter dev/docs/get started/install android studio https //developer android com/studio ou vs code installé (avec plugins dart et flutter) une application créée sur back4app remarque suivez le tutoriel de nouvelle application parse pour apprendre à créer une application parse sur back4app une application flutter connectée à back4app remarque suivez le installer le sdk parse sur le projet flutter pour créer un projet flutter connecté à back4app un appareil (ou un appareil virtuel) exécutant android ou ios comprendre l'application book la classe d'objet principale que vous utiliserez est la livre livre , stockant chaque entrée de livre dans l'enregistrement de plus, voici les trois autres classes d'objet éditeur éditeur nom de l'éditeur du livre, relation un à plusieurs avec livre livre ; genre genre genre du livre, relation un à plusieurs avec livre livre notez que pour cet exemple, nous considérerons qu'un livre ne peut avoir qu'un seul genre ; auteur auteur auteur du livre, relation plusieurs à plusieurs avec livre livre , puisque un livre peut avoir plus d'un auteur et un auteur peut avoir plus d'un livre également ; une représentation visuelle de ce modèle de données nous allons supposer que chaque classe d'objet ( éditeur éditeur , genre genre ) n'a qu'un type de chaîne nom nom attribut et livre livre a titre titre et année année , en plus de tout attribut relationnel supplémentaire dans les guides précédents, nous avons déjà vu comment enregistrer et lire parseobject parseobject donc dans ce guide, nous ne couvrirons pas comment enregistrer et lire genre genre et éditeur éditeur objets vous trouverez les écrans suivants sur l'application livre enregistrement et liste des genres enregistrement et liste des éditeurs enregistrement de livre liste des éditeurs et des livres détails du livre nous n'expliquerons pas le code de l'application flutter puisque l'objectif principal de ce guide est d'utiliser flutter avec parse en utilisant des relations 1 créer un modèle d'application de livre commençons par exécuter le modèle de projet de l'application de livre ouvrez votre projet flutter du guide précédent flutter plugin for parse server le book flutter app https //github com/templates back4app/flutter associations le dépôt est également disponible pour que vous puissiez cloner et exécuter le projet copiez le main dart https //github com/templates back4app/flutter associations/blob/master/lib/main dart fichier et remplacez votre code actuel des guides précédents remarque lorsque debug debug le paramètre dans la fonction parse() initialize parse() initialize est true true , cela permet d'afficher les appels api de parse sur la console cette configuration peut aider à déboguer le code il est conseillé de désactiver le débogage dans la version de production étape 2 connecter le modèle au projet back4app trouvez votre identifiant d'application et vos clés de client en naviguant vers le tableau de bord de votre application à tableau de bord back4app >paramètres de l'application >sécurité & clés https //www back4app com/docs/parse dashboard/app settings mettez à jour votre code dans main dart main dart avec les valeurs de l'applicationid et du clientkey de votre projet dans back4app keyapplicationid = identifiant d'application keyclientkey = clé de client exécutez le projet, et l'application se chargera comme indiqué dans l'image cliquez sur ajouter un genre ajouter un genre pour enregistrer et voir la liste des genres genres qui seront utilisés dans l'enregistrement des livres cliquez sur ajouter un éditeur ajouter un éditeur pour vous inscrire et voir la liste des éditeurs éditeurs qui seront utilisés dans l'enregistrement des livres cliquez sur ajouter un livre ajouter un livre pour enregistrer un nouveau livre livre en utilisant des relations avec genre genre et éditeur éditeur cliquez sur liste des éditeurs/livres liste des éditeurs/livres pour voir la liste des éditeurs éditeurs et livres livres 3 enregistrer un objet livre et ses relations cette fonction créera un nouveau livre dans la base de données back4app avec des relations recherchez la fonction dosavebook dosavebook dans le fichier main dart main dart , et insérez le code ci dessous à l'intérieur de la future\<void> dosavebook() future\<void> dosavebook() fonction 1 final book = parseobject('book') 2 set('title', controllertitle text trim()) 3 set('year', int parse(controlleryear text trim())) 4 //the objectid will be converted to a pointer on the save() method 5 set('genre', parseobject('genre') objectid = genre objectid) 6 //you can also convert to a pointer object before the saving using the topointer() method 7 set( 8 'publisher', 9 (parseobject('publisher') objectid = publisher objectid) 10 topointer()); 11 12 await book save(); pour construire cette fonction, suivez ces étapes 1\ créez une nouvelle instance de la classe book book avec la commande parseobject('book') parseobject('book') 2 utilisez la fonction set set pour définir les champs de cet objet 2 1 title title est un attribut texte qui reçoit une valeur du contrôleur de texte 2 2 genre genre reçoit la valeur en définissant un parseobject parseobject avec l' objectid objectid du genre genre ( parse convertira en pointeur lors de l'enregistrement ) 2 3 publisher publisher reçoit la valeur en définissant un parseobject parseobject avec l' objectid objectid du publisher publisher ( notez que nous pouvons spécifier à parse que nous voulons enregistrer en tant que pointeur pointeur en utilisant la méthode topointer() topointer() ) 3 appelez la fonction save save dans parseobject parseobject , ce qui enregistrera effectivement l'objet dans votre base de données dans le tableau de bord back4app exécutez l'application et testez la nouvelle fonction cliquez sur le ajouter un livre ajouter un livre bouton remplissez les informations du livre l'application nécessite la sélection des auteurs, mais le code pour eux ne sera couvert que dans le prochain guide cliquez sur enregistrer le livre enregistrer le livre bouton pour confirmer que le nouvel objet est enregistré dans la base de données avec des relations, vous pouvez accéder au back4app dashboard back4app dashboard et accéder à la classe book book si vous accédez à votre classe book en utilisant le dashboard, vous pouvez cliquer sur la valeur du pointeur d'objet et vous serez redirigé vers l'objet référencé cela peut sembler être une fonctionnalité inoffensive, mais cela rend le débogage et le traçage des erreurs beaucoup plus rapides que de le rechercher manuellement 4 interroger la liste des livres et ses objets associés cette fonction interrogera les livres dans la base de données back4app en utilisant des relations avec l'éditeur grâce à l'éditeur, nous obtiendrons la liste des livres recherchez la fonction getbooklist getbooklist dans le fichier main dart main dart , puis remplacez le code ci dessous à l'intérieur de la fonction future\<list\<parseobject>> getbooklist(string publisherid) future\<list\<parseobject>> getbooklist(string publisherid) 1 querybuilder\<parseobject> querybook = 2 querybuilder\<parseobject>(parseobject('book')) 3 whereequalto('publisher', 4 (parseobject('publisher') objectid = publisherid) topointer()) 5 orderbyascending('title'); 6 final parseresponse apiresponse = await querybook query(); 7 8 if (apiresponse success && apiresponse results != null) { 9 return apiresponse results; 10 } else { 11 return \[]; 12 } pour construire cette fonction, suivez ces étapes créez une instance de parsequery parsequery objet pour book book classe insérez une condition dans la requête, pour rechercher des books books où le champ publisher publisher est égal à pointer pointer de publisher parseobject publisher parseobject nous trions le résultat par ordre croissant de nom nom effectuez une recherche de la méthode query en utilisant la méthode query() query() si les opérations réussissent, les objets dans book book seront retournés exécutez l'application et testez la nouvelle requête tout d'abord, cliquez sur le bouton liste publisher/book liste publisher/book c'est fait! à ce stade, vous avez appris à créer et interroger des relations un à plusieurs dans parse sur flutter flutter dans le prochain guide, nous vous montrerons comment établir des relations plusieurs à plusieurs et comment effectuer des requêtes renvoyant des données d'objets liés