Flutter
...
Data Objects
Parse Eins-zu-viele-Beziehungen in Flutter implementieren
16 min
eins zu viele beziehung in flutter einführung mit parse können sie datenobjekte speichern, die beziehungen zwischen ihnen herstellen um dieses verhalten zu modellieren, kann jedes parseobject parseobject als wert in anderen parseobject parseobject intern wird das parse framework das referenzierte objekt nur an einem ort speichern, um die konsistenz zu wahren das kann ihnen zusätzliche möglichkeiten bieten, wenn sie komplexe abfragen erstellen und ausführen es gibt drei hauptbeziehungstypen eins zu eins eins zu eins , die direkte beziehungen zwischen zwei objekten und nur diesen herstellen; eins zu viele eins zu viele , bei dem ein objekt mit vielen anderen objekten in beziehung stehen kann; viele zu viele viele zu viele , was viele komplexe beziehungen zwischen vielen objekten schaffen kann in diesem leitfaden werden wir detailliert erläutern, wie die eins zu viele eins zu viele beziehung funktioniert, anhand eines praktischen app beispiels es gibt zwei möglichkeiten, eine eins zu viele eins zu viele beziehung in parse zu erstellen die erste möglichkeit ist die verwendung von zeigern zeigern in kindklasse kindklasse , was die schnellste methode in bezug auf erstellung und abfragezeit ist die zweite möglichkeit ist die verwendung von arrays arrays von zeigern zeigern in der elternklasse, was je nach größe zu langsamen abfragezeiten führen kann aufgrund dieses leistungsproblems werden wir nur beispiele mit zeigern verwenden sie werden eine flutter buchregistrierungs app implementieren und verwandte objekte mit den parse zeigern zeigern erstellen und abfragen eine beziehung wie eins zu eins eins zu eins ist nicht üblich und wir werden sie in unseren leitfäden nicht behandeln als beispiel eine beziehung zwischen der benutzerklasse und einer anderen klasse, die sensible benutzerdaten für sicherheitsgründe https //blog back4app com/parse server best practices/ ( 1 4 lassen sie benutzer nicht auf sensible daten anderer zugreifen ) voraussetzungen flutter version 2 2 x oder höher https //flutter dev/docs/get started/install android studio https //developer android com/studio oder vs code installiert (mit plugins dart und flutter) eine app erstellt auf back4app hinweis folgen sie dem neuen parse app tutorial um zu lernen, wie man eine parse app auf back4app erstellt eine flutter app, die mit back4app verbunden ist hinweis folgen sie dem installieren sie das parse sdk im flutter projekt um ein flutter projekt zu erstellen, das mit back4app verbunden ist ein gerät (oder virtuelles gerät), das android oder ios ausführt verstehen der buch app die hauptobjektklasse, die sie verwenden werden, ist die buch buch klasse, die jeden bucheintrag in der registrierung speichert außerdem sind dies die anderen drei objektklassen verlag verlag name des buchverlags, eins zu viele beziehung mit buch buch ; genre genre buchgenre, eins zu viele beziehung mit buch buch beachten sie, dass wir in diesem beispiel davon ausgehen, dass ein buch nur ein genre haben kann; autor autor buchautor, viele zu viele beziehung mit buch buch , da ein buch mehr als einen autor haben kann und ein autor auch mehr als ein buch haben kann; eine visuelle darstellung dieses datenmodells wir gehen davon aus, dass jede objektklasse ( publisher publisher , genre genre ) nur ein attribut vom typ string name name hat und book book hat title title und year year , abgesehen von zusätzlichen relationalen attributen in den vorherigen anleitungen haben wir bereits gesehen, wie man parseobject parseobject speichert und liest, daher werden wir in dieser anleitung nicht behandeln, wie man genre genre und publisher publisher objekte speichert sie finden die folgenden bildschirme in der buch app registrierung und auflistung von genre registrierung und liste der publisher buchregistrierung liste der publisher und bücher buchdetails wir werden den flutter anwendungscode nicht erklären, da der schwerpunkt dieses leitfadens auf der verwendung von flutter mit parse unter verwendung von beziehungen liegt 1 erstellen sie eine buch app vorlage lassen sie uns zunächst die buch app projektvorlage ausführen öffnen sie ihr flutter projekt aus dem vorherigen leitfaden flutter plugin für parse server das buch flutter app https //github com/templates back4app/flutter associations repository steht ihnen ebenfalls zur verfügung, um das projekt zu klonen und auszuführen kopieren sie die main dart https //github com/templates back4app/flutter associations/blob/master/lib/main dart datei und ersetzen sie ihren aktuellen code aus den vorherigen leitfäden hinweis wenn debug debug parameter in der funktion parse() initialize parse() initialize auf true true , ermöglicht das anzeigen von parse api aufrufen in der konsole diese konfiguration kann beim debuggen des codes helfen es wird empfohlen, das debugging in der release version zu deaktivieren schritt 2 verbinden sie die vorlage mit dem back4app projekt finden sie ihre anwendungs id und client schlüssel anmeldeinformationen, indem sie zu ihrem app dashboard navigieren unter back4app dashboard >app einstellungen >sicherheit & schlüssel https //www back4app com/docs/parse dashboard/app settings aktualisieren sie ihren code in main dart main dart mit den werten ihrer anwendungs id und client schlüssel in back4app keyapplicationid = anwendungs id keyclientkey = client schlüssel führen sie das projekt aus, und die app wird wie im bild angezeigt klicken sie auf genre hinzufügen genre hinzufügen um die liste der genres genres zu registrieren und anzuzeigen, die bei der registrierung von büchern verwendet werden klicken sie auf publisher hinzufügen publisher hinzufügen um sich zu registrieren und die liste der publisher publisher anzuzeigen, die bei der registrierung von büchern verwendet werden klicken sie auf buch hinzufügen buch hinzufügen um ein neues buch buch unter verwendung von beziehungen zu genre genre und publisher publisher klicken sie auf liste publisher/buch liste publisher/buch um die liste der publisher publisher und bücher bücher anzuzeigen 3 speichern sie ein buchobjekt und seine beziehungen diese funktion erstellt ein neues buch in der back4app datenbank mit beziehungen suchen sie nach der funktion dosavebook dosavebook in der datei main dart main dart , und fügen sie den folgenden code in die future\<void> dosavebook() future\<void> dosavebook() funktion ein 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(); um diese funktion zu erstellen, befolge diese schritte 1\ erstellen sie eine neue instanz der parse buch buch klasse mit dem befehl parseobject('book') parseobject('book') 2 verwenden sie die set set funktion, um die felder für dieses objekt festzulegen 2 1 titel titel ist ein textattribut, das den wert vom textcontroller erhält 2 2 genre genre erhält den wert, indem ein parseobject parseobject mit der objectid objectid des ausgewählten genres genres ( parse wird beim speichern in einen zeiger umgewandelt ) 2 3 verlag verlag erhält den wert, indem ein parseobject parseobject mit der objectid objectid des ausgewählten verlags verlags ( beachten sie, dass wir für parse angeben können, dass wir als zeiger zeiger speichern möchten, indem wir die topointer() topointer() methode verwenden ) 3 rufen sie die save save funktion in parseobject parseobject , die das objekt effektiv in ihrer datenbank im back4app dashboard registriert führen sie die app aus und testen sie die neue funktion klicken sie auf die buch hinzufügen buch hinzufügen schaltfläche buchinformationen ausfüllen die app erfordert die auswahl der autoren, aber der code dafür wird erst im nächsten leitfaden behandelt klicken sie auf buch speichern buch speichern schaltfläche um zu bestätigen, dass das neue objekt mit beziehungen in der datenbank gespeichert ist, können sie auf das back4app dashboard back4app dashboard zugreifen und die buch buch klasse aufrufen wenn sie auf ihre buchklasse über das dashboard zugreifen, können sie auf den wert des objektzeigers klicken und werden zum referenzierten objekt weitergeleitet es mag wie eine harmlose funktion erscheinen, aber dies macht das debuggen und die fehlersuche viel schneller, als es manuell zu suchen 4 abfrage der buchliste und ihrer verwandten objekte diese funktion wird bücher in der back4app datenbank abfragen, indem sie beziehungen zum verlag verwendet über den verlag erhalten wir die liste der bücher suchen sie nach der funktion getbooklist getbooklist in der datei main dart main dart , ersetzen sie dann den folgenden code innerhalb der future\<list\<parseobject>> getbooklist(string publisherid) future\<list\<parseobject>> getbooklist(string publisherid) funktion 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 } um diese funktion zu erstellen, befolgen sie diese schritte erstellen sie eine instanz von parsequery parsequery objekt für book book klasse fügen sie eine bedingung in die abfrage ein, um nach büchern büchern zu suchen, bei denen das publisher publisher feld gleich zeiger zeiger von publisher parseobject publisher parseobject ist wir sortieren das ergebnis in aufsteigender namens namens reihenfolge führen sie die suchmethode einer abfrage mit der query() query() methode aus wenn die operationen erfolgreich sind, werden objekte in book book zurückgegeben führen sie die app aus und testen sie die neue abfrage klicken sie zuerst auf die liste publisher/buch liste publisher/buch schaltfläche es ist vollbracht! an diesem punkt haben sie gelernt, wie man eins zu viele beziehungen in parse auf flutter flutter erstellt und abfragt im nächsten leitfaden zeigen wir ihnen, wie man viele zu viele beziehungen herstellt und wie man abfragen durchführt, die daten von verwandten objekten zurückgeben