1 00:00:02,120 --> 00:00:08,120 Pobieranie danych z naszej lokalnej bazy danych nie różni się tak bardzo od pobierania ich z serwera WWW, zamiast 2 00:00:08,150 --> 00:00:11,690 sięgania do serwera WWW, po prostu sięgamy do naszej lokalnej bazy 3 00:00:11,690 --> 00:00:13,010 danych, ale to wszystko. 4 00:00:13,040 --> 00:00:18,950 Zacznijmy więc od napisania funkcji w pliku pomocnika db, która pozwala nam pobierać dane z bazy danych. 5 00:00:19,700 --> 00:00:26,750 W tym celu wyeksportuję nową stałą, pobiorę miejsca, które powinny robić to, co sugeruje nazwa, nie przyjmuje żadnych argumentów i tam oczywiście chcę dotrzeć 6 00:00:26,750 --> 00:00:31,880 do mojej bazy danych i uzyskać wszystkie miejsca. Więc skopiuję ten kod tutaj z miejsca 7 00:00:31,880 --> 00:00:35,660 wstawienia z obietnicą i tak dalej, ale zapytanie zmieni 8 00:00:35,980 --> 00:00:41,840 się teraz, a także argumenty, nie potrzebuję żadnych argumentów, ponieważ nie będziemy tu wstawiać 9 00:00:41,840 --> 00:00:43,110 żadnych argumentów. 10 00:00:43,340 --> 00:00:48,620 Zamiast uruchamiać insert w, musimy uruchomić inne zapytanie, które będzie bardzo 11 00:00:48,620 --> 00:00:55,520 prostym zapytaniem. Chcę wybrać wszystkie miejsca w tabeli miejsc, co jest wykonywane przez uruchomienie polecenia select 12 00:00:55,520 --> 00:01:02,170 *, co oznacza, że chcę uzyskać wszystkie kolumny, wszystkie pola w tej bazie danych z miejsc. 13 00:01:02,180 --> 00:01:09,740 Teraz, jeśli znasz trochę SQL, teraz możesz również dodać klauzulę where, aby powiedzieć, na przykład, gdzie identyfikator jest większy i tak dalej, ale nie zrobię 14 00:01:09,740 --> 00:01:11,780 tego tutaj, chcę uzyskać wszystkie miejsca, 15 00:01:11,780 --> 00:01:16,150 więc uruchomię to zapytanie i zostaw resztę taką, jaka jest, a teraz musimy 16 00:01:16,310 --> 00:01:20,870 po prostu przejść do naszych działań i upewnić się, że mamy do tego odpowiednie działanie. 17 00:01:21,530 --> 00:01:25,670 Przede wszystkim dodam tutaj nowy identyfikator, nowy 18 00:01:25,700 --> 00:01:33,740 identyfikator akcji, ustawiam miejsca, tak jak zrobiliśmy w module HTTP do ustawiania miejsc, które pobieraliśmy 19 00:01:33,970 --> 00:01:46,020 z serwera, a dzięki temu mogę stworzyć nowego twórcę akcji tutaj, gdzie mówię, ładuj miejsca, gdzie to jest nazwa i w tym 20 00:01:46,860 --> 00:01:54,980 kreatorze akcji, zwrócę tę funkcję wewnętrzną i używam asynchronicznego czekania tam, więc ta funkcja wygląda 21 00:01:54,990 --> 00:02:01,590 tak, gdzie na końcu oczywiście wysyłamy akcję obiekt, w którym należy ustawić 22 00:02:01,590 --> 00:02:05,300 typ miejsca i gdzie ustawimy wszystkie 23 00:02:06,020 --> 00:02:14,340 miejsca, które załadowaliśmy, ale oczywiście tego brakuje. Miejsca uzyskujemy uruchamiając funkcję pobierania miejsc, którą właśnie zdefiniowałem w 24 00:02:14,340 --> 00:02:17,700 pliku helpers, w pliku db tam, więc zaimportujmy 25 00:02:17,700 --> 00:02:19,570 go stamtąd, a 26 00:02:20,370 --> 00:02:26,870 następnie tutaj w kreatorze akcji load places, możemy uruchomić pobieranie miejsc takich jak ten, to 27 00:02:26,940 --> 00:02:28,970 zwraca obietnicę, więc możemy na 28 00:02:28,970 --> 00:02:32,300 to poczekać i ponownie otrzymamy tutaj wynik db. 29 00:02:32,390 --> 00:02:37,820 Teraz możemy również zawinąć to w blok try catch, aby upewnić się, że wychwycimy wszelkie błędy, które mogą 30 00:02:37,820 --> 00:02:40,580 wystąpić, więc tutaj, jeśli mamy błąd, po prostu go 31 00:02:41,270 --> 00:02:43,900 wyrzucę, więc musimy obsłużyć go w komponencie, jestem 32 00:02:44,210 --> 00:02:48,620 nie robiąc tego tutaj, ale możesz obsługiwać to w taki sam sposób, jak na 33 00:02:48,620 --> 00:02:50,420 przykład w module HTTP, a 34 00:02:50,540 --> 00:02:58,000 dzięki temu tutaj, również w bloku try, możemy wysłać miejsca, które pobieramy. W tym celu ważne jest, abyśmy rozumieli, jak 35 00:02:58,010 --> 00:03:00,980 wygląda wynik bazy danych, więc konsoliduję 36 00:03:00,980 --> 00:03:07,490 tutaj wynik DB logu, abyśmy mogli go zobaczyć, a teraz chcę wykonać ładowanie miejsc na 37 00:03:07,520 --> 00:03:11,800 ekranie listy moich miejsc, ponieważ tam potrzebuję wszystkich miejsca, prawda? 38 00:03:11,840 --> 00:03:23,020 Więc tutaj zaimportuję gwiazdkę jako akcje miejsc z folderu sklepu, a tam plik akcji miejsc i musimy wysłać akcję, więc zaimportuję 39 00:03:23,410 --> 00:03:30,670 use dispatch z React Redux, a następnie tutaj stworzymy tę funkcję wysyłki, wykonując użycie 40 00:03:30,700 --> 00:03:34,680 wysyłamy i teraz, gdy ładuje się ten 41 00:03:34,900 --> 00:03:41,830 komponent, który możemy w końcu dowiedzieć się za pomocą efektu użycia, chcę wysłać 42 00:03:41,830 --> 00:03:44,520 tę akcję ładowania danych. 43 00:03:44,520 --> 00:03:49,800 Tutaj możemy uruchomić efekt użycia, a w funkcji, którą przekazujemy, aby 44 00:03:49,840 --> 00:03:56,170 użyć efektu, chcę wywołać akcje miejsc. loadPlaces, 45 00:03:56,180 --> 00:04:05,090 właśnie tak. Teraz oznacza to, że dla tego efektu mamy jedną zależność, to działanie wysyłania, 46 00:04:05,090 --> 00:04:07,040 które nigdy nie powinno się zmienić, 47 00:04:07,100 --> 00:04:11,960 dlatego powinno być uruchamiane tylko raz, gdy komponent jest tworzony, a dokładnie takie zachowanie chcę 48 00:04:11,960 --> 00:04:12,610 tutaj. 49 00:04:13,910 --> 00:04:19,400 Więc teraz akcja ładowania miejsc powinna zostać uruchomiona, gdy nasza aplikacja się uruchomi i rzeczywiście, zaczęła 50 00:04:19,400 --> 00:04:25,160 się tutaj tutaj na iOS, a teraz także na Androidzie, a zatem tutaj, w dzienniku, widzę trochę 51 00:04:25,160 --> 00:04:29,820 danych wyjściowych, a to jest dziennik Androida i to jest wynik od obciążenia 52 00:04:29,820 --> 00:04:32,960 umieszcza akcję na końcu. Jak widzisz, to wynik 53 00:04:32,960 --> 00:04:38,100 naszej akcji w bazie danych. Wstaw identyfikator jest niezdefiniowany, ponieważ czegoś nie wstawiliśmy, po prostu coś otrzymaliśmy. 54 00:04:38,300 --> 00:04:43,820 Mamy to pole wierszy, a to kolejny obiekt, który ma pole _array, które zawiera tablicę obiektów, a 55 00:04:43,820 --> 00:04:46,990 na końcu są to nasze dane dotyczące miejsca, prawda? 56 00:04:47,000 --> 00:04:49,300 Ten obiekt tutaj, to nasze 57 00:04:49,310 --> 00:04:52,940 dane miejsca, ma adres, identyfikator, imageUri i tak dalej. 58 00:04:52,940 --> 00:04:57,830 Tak więc wynik jest w wierszach, a następnie w tablicy _rodzajowej, tam właśnie 59 00:04:57,830 --> 00:04:59,410 żyją nasze dane. 60 00:04:59,450 --> 00:05:06,110 Właśnie tego potrzebujemy w pliku akcji miejsc tutaj, gdy wysyłamy nasze miejsca, które chcemy wyświetlić, 61 00:05:06,110 --> 00:05:08,150 które chcemy załadować do 62 00:05:08,150 --> 00:05:14,600 Redux, które powinny być dbResult. wydziwianie. _szyk. 63 00:05:14,680 --> 00:05:21,790 Teraz oczywiście wyzwala to akcje ustawionych miejsc, więc teraz w reduktorze miejsc musimy się tym 64 00:05:21,790 --> 00:05:22,820 przejmować, więc 65 00:05:22,840 --> 00:05:27,140 tutaj dodaję skrzynkę, ustawiam miejsca, upewnij się, że importujesz 66 00:05:27,250 --> 00:05:35,210 identyfikator ustawionego miejsca tutaj i w ustawionych miejscach W takim przypadku mogę zwrócić nową migawkę stanu, w której 67 00:05:35,210 --> 00:05:41,310 moje miejsca są zasadniczo ustawione na miejsca, które wróciłem z bazy danych, i 68 00:05:41,750 --> 00:05:47,510 robię to, ustawiając je na działanie. miejsc, ponieważ w moim pliku działań mam ten 69 00:05:47,510 --> 00:05:48,300 klucz 70 00:05:48,320 --> 00:05:50,410 miejsca w akcji po prawej stronie, 71 00:05:51,380 --> 00:05:59,520 czyli załadowane dane miejsca i tam chcę po prostu zamapować tę tablicę na nową tablicę, aby przekształcić dane, aby przekształcić każde pojedyncze miejsce 72 00:05:59,520 --> 00:06:07,170 w nowe miejsce, które podąża za moim modelem miejsca, w którym na przykład przekonwertowałem ID miejsca, które załadowaliśmy na ciąg, który 73 00:06:07,230 --> 00:06:09,680 jest opcjonalny, chcę tylko pokazać, jak 74 00:06:09,690 --> 00:06:13,670 można również przekształcić dane, jeśli zajdzie taka potrzeba, można to zrobić 75 00:06:13,710 --> 00:06:17,440 za pomocą metody mapy który mapuje tę tablicę na nową. 76 00:06:17,670 --> 00:06:24,660 Więc robię to, zachowuję tytuł, zachowuję imageUri i po prostu nie potrzebuję adresu i szerokości geograficznej itd. Właśnie 77 00:06:24,660 --> 00:06:25,650 dlatego mapuję 78 00:06:26,190 --> 00:06:29,520 to, aby móc sporządzić pewne dane, więc teraz 79 00:06:29,520 --> 00:06:35,720 mapuję tę tablicę miejsc, które ładuję do nowej tablicy miejsc, w których dbam tylko o identyfikator, 80 00:06:35,720 --> 00:06:36,900 tytuł i imageUri. 81 00:06:37,970 --> 00:06:43,670 Teraz, jeśli to uratujemy, powinniśmy być w stanie zobaczyć, jak nasze miejsca są ładowane tutaj na Androidzie, to 82 00:06:43,880 --> 00:06:49,880 jedno miejsce, które wcześniej przechowaliśmy i rzeczywiście jest. To nasze miejsce, miejsce 83 00:06:49,890 --> 00:06:53,180 załadowane. Dzięki temu 84 00:06:53,410 --> 00:06:57,850 możemy teraz skupić się również na uzyskaniu lokalizacji użytkownika.