Flutter
...
Data Objects
Relazioni Molti-a-Molti in Parse per Flutter
11 min
relazione molti a molti su flutter introduzione nella guida precedente, abbiamo imparato come utilizzare le relazioni uno a molti e continueremo con il nostro progetto in questa guida, ci concentreremo sulla relazione più comune molti a molti ci sono tre modi per creare una relazione molti a molti in parse il primo è utilizzare il parse relazioni relazioni , che è il più veloce in termini di creazione e tempo di query useremo questo in questa guida il secondo è utilizzare array array di puntatori puntatori che possono portare a tempi di query lenti a seconda delle loro dimensioni il terzo è utilizzare jointable jointable dove l'idea proviene dai database classici quando c'è una relazione molti a molti, combiniamo ogni objectid objectid o puntatore puntatore da entrambi i lati insieme per costruire una nuova tabella separata in cui viene tracciata la relazione in questa guida implementerai una relazione molti a molti relazione molti a molti su un'app di registrazione libri flutter utilizzando il parse relazioni relazioni imparerai come creare e interrogare relazioni di dati molti a molti e come eseguire query che restituiscono dati da oggetti correlati, utilizzando back4app e il flutter sdk requisiti android studio https //developer android com/studio o vs code installato (con plugin dart e flutter) nota l'app flutter creata nella guida precedente completa la guida precedente in modo da avere una migliore comprensione della relazione uno a molti relazione uno a molti classe un dispositivo (o dispositivo virtuale) che esegue android o ios 1 esegui il modello dell'app book se non hai completato la guida precedente, puoi clonare ed eseguire il progetto completo book flutter app https //github com/templates back4app/flutter associations dal nostro repository puoi anche dare un'occhiata alla guida precedente https //www back4app com/docs/flutter/parse sdk/data objects/%7bsite baseurl%7d%7d//flutter/parse sdk/data objects/flutter one to many relationship per comprendere meglio il modello dell'app di seguito puoi trovare una rappresentazione visiva del modello di dati di registrazione del libro 2 salva un oggetto libro e il suo autore apri il progetto flutter dalla guida precedente relazione uno a molti su flutter https //www back4app com/docs//flutter/parse sdk/data objects/flutter one to many relationship cerca la funzione dosavebook dosavebook nel file main dart main dart , e sostituisci con il codice qui sotto all'interno della future\<void> dosavebook() future\<void> dosavebook() funzione qui sotto questa funzione creerà un nuovo libro nel data store di back4app con relazioni 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('publisher', 8 (parseobject('publisher') objectid = publisher objectid) topointer()) 9 //saving a list of authors for the book 10 addrelation( 11 'authors', 12 authors 13 map((o) => parseobject('author') objectid = o objectid) 14 tolist()); 15 16 await book save(); per costruire questa funzione, segui questi passaggi 1\ crea una nuova istanza della parse libro libro classe con il comando parseobject('libro') parseobject('libro') 2 usa il set set funzione per impostare i campi per questo oggetto 2 1 titolo titolo è un attributo di testo che riceve valore dal controller di testo 2 2 genere genere riceve il valore definendo un parseobject parseobject con il objectid objectid del genere genere ( parse convertirà in puntatore al salvataggio ) 2 3 editore editore riceve il valore definendo un parseobject parseobject con il objectid objectid del publisher publisher ( nota che possiamo specificare per parse che vogliamo salvare come un puntatore puntatore usando il topointer() topointer() metodo ) 2 4 autori autori chiamiamo il addrelation addrelation metodo di parseobject parseobject , inviando un elenco di parseobject parseobject con il objectid objectid degli autori autori 3 chiama il salva salva funzione in parseobject parseobject , che registrerà effettivamente l'oggetto nel tuo database nel back4app dashboard esegui l'app e testa il nuovo dosavebook() dosavebook() funzione per prima cosa, accedi al dashboard e elimina i libri che erano stati precedentemente registrati nella guida precedente clicca sul aggiungi libro aggiungi libro pulsante compila le informazioni del libro con gli autori clicca su salva libro salva libro pulsante per confermare che il nuovo oggetto sia salvato nel database con relazioni, puoi accedere al back4app dashboard back4app dashboard e accedere alla classe book classe book cliccando sul valore del puntatore/relazione dell'oggetto nel tuo dashboard verrai portato all'entry dell'oggetto referenziato potrebbe sembrare una funzionalità innocua, ma questo rende il debug e la tracciabilità degli errori molto più rapidi rispetto alla ricerca manuale 3 interroga i dettagli del libro con relazioni questa funzione interrogherà i dettagli del libro nel database di back4app, restituendo i dati delle relazioni in alcune situazioni, vuoi restituire più tipi di oggetti correlati in un'unica query puoi farlo con il includeobject includeobject metodo nel nostro esempio, vogliamo restituire i libri, con informazioni da genere e editori cerca la funzione getbookdetail getbookdetail nel file main dart main dart , poi sostituisci il codice qui sotto all'interno della getbookdetail(parseobject book) getbookdetail(parseobject book) funzione 1 querybuilder\<parseobject> querybook = 2 querybuilder\<parseobject>(parseobject('book')) 3 whereequalto('objectid', book objectid) 4 includeobject(\['publisher', 'genre']); 5 6 final parseresponse responsebook = await querybook query(); 7 8 if (responsebook success && responsebook results != null) { 9 final book = (responsebook results first) as parseobject; 10 booktitle = book get\<string>('title'); 11 bookyear = book get\<int>('year'); 12 bookgenre = book get\<parseobject>('genre') get\<string>('name'); 13 bookpublisher = book get\<parseobject>('publisher') get\<string>('name'); 14 loadeddata = true; 15 } 16 17 querybuilder\<parseobject> queryauthors = 18 querybuilder\<parseobject>(parseobject('author')) 19 whererelatedto('authors', 'book', book objectid); 20 21 final parseresponse responseauthors = await queryauthors query(); 22 23 if (responseauthors success && responseauthors results != null) { 24 bookauthors = responseauthors results 25 map((e) => (e as parseobject) get\<string>('name')) 26 tolist(); 27 } per costruire questa funzione, segui questi passaggi crea un'istanza di parsequery parsequery oggetto per book book classe inserisci una condizione nella query, per cercare books books dove objectid objectid il campo è uguale objectid objectid del libro selezionato utilizziamo il metodo includeobject, informando i campi dei puntatori di cui vogliamo restituire i dati nella stessa query genere e editore puoi anche fare includeobject a più livelli usando la notazione a punti esempio ` includeobject(\[‘post’, ‘post authors’]); esegui il metodo di ricerca di una query usando query() query() metodo se le operazioni hanno successo, l'oggetto in book book verrà restituito utilizziamo il metodo get per recuperare i dati per i campi che sono puntatori, dovremo prima recuperare il puntatore, quindi ottenere i suoi dati esempio bookgenre = book get\<parseobject>('genre') get\<string>('name'); bookgenre = book get\<parseobject>('genre') get\<string>('name'); nella seconda fase del processo, dobbiamo recuperare gli autori associati al libro per costruire questa funzione, segui questi passaggi crea un'istanza di parsequery parsequery oggetto per la classe authors authors inserisci una condizione nella query, utilizzando l'operatore whererelatedto whererelatedto per cercare la relazione authors authors con book book , dove book book è uguale all' objectid objectid del libro selezionato esegui il metodo di ricerca di una query utilizzando il metodo query() query() se le operazioni hanno successo, verrà restituito l'oggetto in book book utilizziamo il metodo get per recuperare i dati esegui l'app e testa la nuova query per prima cosa, fai clic sul pulsante elenco editore/libro elenco editore/libro seleziona un libro dall'elenco la schermata successiva mostrerà i dati per i libri e le loro relazioni è fatto! a questo punto, hai imparato come creare e interrogare relazioni molti a molti e come eseguire query che restituiscono dati da oggetti correlati in parse su flutter flutter