1 00:00:02,120 --> 00:00:08,120 Das Abrufen von Daten aus unserer lokalen Datenbank unterscheidet sich nicht wesentlich vom Abrufen von Daten von einem Webserver. Statt 2 00:00:08,150 --> 00:00:11,690 auf einen Webserver zuzugreifen, greifen wir nur auf unsere lokale Datenbank 3 00:00:11,690 --> 00:00:13,010 zu, aber das war's. 4 00:00:13,040 --> 00:00:18,950 Beginnen wir also damit, eine Funktion in die Datenbank-Hilfsdatei zu schreiben, mit der wir Daten aus der Datenbank abrufen können. 5 00:00:19,700 --> 00:00:26,750 Dafür exportiere ich dort eine neue Konstante, rufe Orte ab, die das tun sollen, was der Name andeutet, keine Argumente akzeptiert und dort natürlich auf 6 00:00:26,750 --> 00:00:31,880 meine Datenbank zugreifen und alle Orte abrufen möchte. Also kopiere ich diesen Code hier von 7 00:00:31,880 --> 00:00:35,660 der Einfügestelle mit dem Versprechen und so weiter, aber die 8 00:00:35,980 --> 00:00:41,840 Abfrage ändert sich jetzt und auch die Argumente. Ich brauche keine Argumente, da wir hier keine 9 00:00:41,840 --> 00:00:43,110 Argumente einfügen. 10 00:00:43,340 --> 00:00:48,620 Anstatt insert in auszuführen, müssen wir eine andere Abfrage ausführen. Dies ist 11 00:00:48,620 --> 00:00:55,520 eine sehr einfache Abfrage. Ich möchte alle Stellen in meiner Orts-Tabelle auswählen. Dies erfolgt durch Ausführen von select 12 00:00:55,520 --> 00:01:02,170 *, was bedeutet, dass ich alle Spalten und alle Felder abrufen möchte in dieser Datenbank von Orten. 13 00:01:02,180 --> 00:01:09,740 Wenn Sie sich mit SQL auskennen, können Sie jetzt auch eine where-Klausel hinzufügen, um anzugeben, wo die ID größer ist, und so weiter. Ich werde dies hier jedoch 14 00:01:09,740 --> 00:01:11,780 nicht tun. Ich möchte alle Stellen abrufen, 15 00:01:11,780 --> 00:01:16,150 damit ich diese Abfrage ausführen kann und lassen Sie den Rest so wie er ist und 16 00:01:16,310 --> 00:01:20,870 jetzt müssen wir nur noch zu unseren Aktionen gehen und sicherstellen, dass wir eine Aktion dafür haben. 17 00:01:21,530 --> 00:01:25,670 Zunächst füge ich hier eine neue Kennung hinzu, eine 18 00:01:25,700 --> 00:01:33,740 neue Aktionskennung, setze Orte, genau wie im HTTP-Modul zum Festlegen der Orte, die wir von einem Server abgerufen 19 00:01:33,970 --> 00:01:46,020 haben, und damit kann ich einen neuen Aktionsersteller erstellen Hier, wo ich vielleicht Ladeorte sage, wo dies der Name ist und in diesem Aktionsersteller, werde ich diese 20 00:01:46,860 --> 00:01:54,980 innere Funktion zurückgeben und dort asynchrone Warten verwenden, also sieht diese Funktion so aus, wo wir am Ende 21 00:01:54,990 --> 00:02:01,590 natürlich eine Aktion auslösen Objekt, in dem der Typ Orte setzen soll und an dem 22 00:02:01,590 --> 00:02:05,300 wir alle Orte setzen, die wir geladen 23 00:02:06,020 --> 00:02:14,340 haben, aber das ist natürlich der Teil, der fehlt. Wir erhalten die Orte, indem wir diese Funktion zum Abrufen von Orten 24 00:02:14,340 --> 00:02:17,700 ausführen, die ich gerade in der Hilfedatei und in der 25 00:02:17,700 --> 00:02:19,570 dortigen Datenbank definiert habe. 26 00:02:20,370 --> 00:02:26,870 Importieren wir sie also von dort und dann hier im Aktionsersteller zum Laden von Orten können wir solche Abruforte 27 00:02:26,940 --> 00:02:28,970 ausführen gibt ein Versprechen zurück, damit 28 00:02:28,970 --> 00:02:32,300 wir darauf warten können und wieder hier unser Datenbankergebnis erhalten. 29 00:02:32,390 --> 00:02:37,820 Jetzt können wir dies auch in einen try catch-Block einschließen, um sicherzustellen, dass wir alle Fehler abfangen, die auftreten könnten. 30 00:02:37,820 --> 00:02:40,580 Wenn wir also einen Fehler haben, werde ich ihn einfach 31 00:02:41,270 --> 00:02:43,900 werfen, also müssen wir ihn tatsächlich in der Komponente 32 00:02:44,210 --> 00:02:48,620 behandeln Wenn Sie das hier nicht tun, aber Sie könnten es genauso behandeln, wie Sie es zum 33 00:02:48,620 --> 00:02:50,420 Beispiel im HTTP-Modul gehandhabt haben, und 34 00:02:50,540 --> 00:02:58,000 damit können wir hier schließlich auch im try-Block die Stellen versenden, die wir abrufen. Dafür ist es wichtig, dass wir verstehen, wie 35 00:02:58,010 --> 00:03:00,980 das Datenbankergebnis aussieht. Daher werde ich 36 00:03:00,980 --> 00:03:07,490 das Protokoll-DB-Ergebnis hier trösten, damit wir es untersuchen können. Jetzt möchte ich Ladeorte in meinem 37 00:03:07,520 --> 00:03:11,800 Ortslistenbildschirm ausführen, da ich dort alle benötige die Orte, richtig? 38 00:03:11,840 --> 00:03:23,020 Hier importiere ich Sterne als Platzierungsaktionen aus dem Speicherordner und dort die Platzierungsaktionsdatei, und wir müssen eine Aktion auslösen. Daher importiere 39 00:03:23,410 --> 00:03:30,670 ich den Verwendungsversand aus React Redux und erstelle hier diese Versandfunktion, indem wir die 40 00:03:30,700 --> 00:03:34,680 Verwendung ausführen Versand und jetzt, wenn diese Komponente 41 00:03:34,900 --> 00:03:41,830 geladen wird, was wir am Ende mit Hilfe des Nutzungseffekts herausfinden können, möchte 42 00:03:41,830 --> 00:03:44,520 ich diese Datenladeaktion versenden. 43 00:03:44,520 --> 00:03:49,800 Hier können wir also den Use-Effekt ausführen und in der Funktion, die wir an 44 00:03:49,840 --> 00:03:56,170 den Use-Effekt übergeben, möchte ich Ortsaktionen auslösen. loadPlaces, 45 00:03:56,180 --> 00:04:05,090 richtig, so. Das bedeutet, dass wir für diesen Effekt eine Abhängigkeit haben, nämlich die Versandaktion, die sich 46 00:04:05,090 --> 00:04:07,040 niemals ändern sollte. Daher sollte diese 47 00:04:07,100 --> 00:04:11,960 Aktion nur einmal ausgeführt werden, wenn die Komponente erstellt wird. Dies ist genau das Verhalten, das ich 48 00:04:11,960 --> 00:04:12,610 hier möchte. 49 00:04:13,910 --> 00:04:19,400 Jetzt sollte die Aktion zum Laden von Orten ausgelöst werden, wenn unsere App gestartet wird. Tatsächlich wurde 50 00:04:19,400 --> 00:04:25,160 sie hier bereits unter iOS und jetzt auch unter Android gestartet. Daher sehe ich hier im Protokoll einige 51 00:04:25,160 --> 00:04:29,820 Ausgaben und das ist das Android-Protokoll und das ist das Ergebnis von der Last 52 00:04:29,820 --> 00:04:32,960 platziert Aktion am Ende. Wie Sie sehen, ist dies 53 00:04:32,960 --> 00:04:38,100 das Ergebnis unserer Datenbankaktion. Die ID zum Einfügen ist undefiniert, da wir nichts eingefügt haben, sondern nur etwas. 54 00:04:38,300 --> 00:04:43,820 Wir haben dieses Zeilenfeld und das ist ein anderes Objekt, das ein _array-Feld hat, das ein Array von 55 00:04:43,820 --> 00:04:46,990 Objekten enthält, und am Ende sind das unsere Ortsdaten, oder? 56 00:04:47,000 --> 00:04:49,300 Dieses Objekt hier, das sind unsere 57 00:04:49,310 --> 00:04:52,940 Ortsdaten, es hat die Adresse, die ID, imageUri und so weiter. 58 00:04:52,940 --> 00:04:57,830 Es ist also das Ergebnis in Zeilen und dann _array, dort 59 00:04:57,830 --> 00:04:59,410 leben unsere Daten. 60 00:04:59,450 --> 00:05:06,110 Das ist es, was wir in der Ortsaktionsdatei hier brauchen, wenn wir unsere Orte versenden, die wir anzeigen 61 00:05:06,110 --> 00:05:08,150 wollen, die wir in Redux 62 00:05:08,150 --> 00:05:14,600 laden wollen, das sollte dbResult sein. Reihen. _array. 63 00:05:14,680 --> 00:05:21,790 Das löst dann natürlich die Aktionen für festgelegte Orte aus. Jetzt müssen wir uns im Ortsreduzierer darum kümmern. 64 00:05:21,790 --> 00:05:22,820 Hier füge 65 00:05:22,840 --> 00:05:27,140 ich einen Fall hinzu, setze Orte und stelle sicher, dass 66 00:05:27,250 --> 00:05:35,210 du die eingestellte Ortskennung hier und an den festgelegten Orten importierst In diesem Fall kann ich einen neuen Status-Snapshot zurückgeben, 67 00:05:35,210 --> 00:05:41,310 bei dem meine Orte im Wesentlichen auf die Orte festgelegt sind, die ich aus der 68 00:05:41,750 --> 00:05:47,510 Datenbank erhalten habe, und dies durch Aktivieren. Orte, weil ich in meiner Aktionsdatei diesen Platzierungsschlüssel im 69 00:05:47,510 --> 00:05:48,300 Aktionsrecht 70 00:05:48,320 --> 00:05:50,410 habe, bei dem es sich um 71 00:05:51,380 --> 00:05:59,520 die geladenen Ortsdaten handelt, und dort möchte ich dieses Array nur einem neuen Array zuordnen, um die Daten zu transformieren und jeden einzelnen Ort 72 00:05:59,520 --> 00:06:07,170 in einen neuen Ort umzuwandeln folgt meinem Ortsmodell, in dem ich beispielsweise die ID des von uns geladenen Ortes in eine optionale Zeichenfolge 73 00:06:07,230 --> 00:06:09,680 konvertiere. Ich möchte Ihnen nur zeigen, wie 74 00:06:09,690 --> 00:06:13,670 Sie die Daten bei Bedarf auch transformieren können. Dies können Sie mit 75 00:06:13,710 --> 00:06:17,440 der Kartenmethode tun Dadurch wird dieses Array einem neuen Array zugeordnet. 76 00:06:17,670 --> 00:06:18,140 Da 77 00:06:18,150 --> 00:06:24,660 mache ich das also, ich behalte den Titel, ich behalte das imageUri und ich brauche gerade keine Adresse und keinen Breitengrad und so 78 00:06:24,660 --> 00:06:25,650 weiter. Deshalb ordne 79 00:06:26,190 --> 00:06:29,520 ich dies auch zu, damit ich einige Daten erstellen kann Jetzt ordne 80 00:06:29,520 --> 00:06:35,720 ich diese Reihe von Orten, die ich lade, einer neuen Reihe von Orten zu, an denen mir nur die ID, der Titel 81 00:06:35,720 --> 00:06:36,900 und imageUri wichtig sind. 82 00:06:37,970 --> 00:06:43,670 Wenn wir dies speichern, sollten wir tatsächlich sehen können, wie unsere Orte hier auf Android geladen werden, dem einen Ort, 83 00:06:43,880 --> 00:06:49,880 den wir zuvor gespeichert haben, und tatsächlich ist er hier. Das ist also unser Platz, das 84 00:06:49,890 --> 00:06:53,180 ist Platz geladen. Damit können wir 85 00:06:53,410 --> 00:06:57,850 uns jetzt natürlich auch darauf konzentrieren, den Benutzerstandort zu ermitteln.