Pobieranie danych z naszej lokalnej bazy danych nie różni się tak bardzo od pobierania ich z serwera WWW, zamiast
sięgania do serwera WWW, po prostu sięgamy do naszej lokalnej bazy
danych, ale to wszystko.
Zacznijmy więc od napisania funkcji w pliku pomocnika db, która pozwala nam pobierać dane z bazy danych.
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ć
do mojej bazy danych i uzyskać wszystkie miejsca. Więc skopiuję ten kod tutaj z miejsca
wstawienia z obietnicą i tak dalej, ale zapytanie zmieni
się teraz, a także argumenty, nie potrzebuję żadnych argumentów, ponieważ nie będziemy tu wstawiać
żadnych argumentów.
Zamiast uruchamiać insert w, musimy uruchomić inne zapytanie, które będzie bardzo
prostym zapytaniem. Chcę wybrać wszystkie miejsca w tabeli miejsc, co jest wykonywane przez uruchomienie polecenia select
*, co oznacza, że chcę uzyskać wszystkie kolumny, wszystkie pola w tej bazie danych z miejsc.
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ę
tego tutaj, chcę uzyskać wszystkie miejsca,
więc uruchomię to zapytanie i zostaw resztę taką, jaka jest, a teraz musimy
po prostu przejść do naszych działań i upewnić się, że mamy do tego odpowiednie działanie.
Przede wszystkim dodam tutaj nowy identyfikator, nowy
identyfikator akcji, ustawiam miejsca, tak jak zrobiliśmy w module HTTP do ustawiania miejsc, które pobieraliśmy
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
kreatorze akcji, zwrócę tę funkcję wewnętrzną i używam asynchronicznego czekania tam, więc ta funkcja wygląda
tak, gdzie na końcu oczywiście wysyłamy akcję obiekt, w którym należy ustawić
typ miejsca i gdzie ustawimy wszystkie
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
pliku helpers, w pliku db tam, więc zaimportujmy
go stamtąd, a
następnie tutaj w kreatorze akcji load places, możemy uruchomić pobieranie miejsc takich jak ten, to
zwraca obietnicę, więc możemy na
to poczekać i ponownie otrzymamy tutaj wynik db.
Teraz możemy również zawinąć to w blok try catch, aby upewnić się, że wychwycimy wszelkie błędy, które mogą
wystąpić, więc tutaj, jeśli mamy błąd, po prostu go
wyrzucę, więc musimy obsłużyć go w komponencie, jestem
nie robiąc tego tutaj, ale możesz obsługiwać to w taki sam sposób, jak na
przykład w module HTTP, a
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
wygląda wynik bazy danych, więc konsoliduję
tutaj wynik DB logu, abyśmy mogli go zobaczyć, a teraz chcę wykonać ładowanie miejsc na
ekranie listy moich miejsc, ponieważ tam potrzebuję wszystkich miejsca, prawda?
Więc tutaj zaimportuję gwiazdkę jako akcje miejsc z folderu sklepu, a tam plik akcji miejsc i musimy wysłać akcję, więc zaimportuję
use dispatch z React Redux, a następnie tutaj stworzymy tę funkcję wysyłki, wykonując użycie
wysyłamy i teraz, gdy ładuje się ten
komponent, który możemy w końcu dowiedzieć się za pomocą efektu użycia, chcę wysłać
tę akcję ładowania danych.
Tutaj możemy uruchomić efekt użycia, a w funkcji, którą przekazujemy, aby
użyć efektu, chcę wywołać akcje miejsc. loadPlaces,
właśnie tak. Teraz oznacza to, że dla tego efektu mamy jedną zależność, to działanie wysyłania,
które nigdy nie powinno się zmienić,
dlatego powinno być uruchamiane tylko raz, gdy komponent jest tworzony, a dokładnie takie zachowanie chcę
tutaj.
Więc teraz akcja ładowania miejsc powinna zostać uruchomiona, gdy nasza aplikacja się uruchomi i rzeczywiście, zaczęła
się tutaj tutaj na iOS, a teraz także na Androidzie, a zatem tutaj, w dzienniku, widzę trochę
danych wyjściowych, a to jest dziennik Androida i to jest wynik od obciążenia
umieszcza akcję na końcu. Jak widzisz, to wynik
naszej akcji w bazie danych. Wstaw identyfikator jest niezdefiniowany, ponieważ czegoś nie wstawiliśmy, po prostu coś otrzymaliśmy.
Mamy to pole wierszy, a to kolejny obiekt, który ma pole _array, które zawiera tablicę obiektów, a
na końcu są to nasze dane dotyczące miejsca, prawda?
Ten obiekt tutaj, to nasze
dane miejsca, ma adres, identyfikator, imageUri i tak dalej.
Tak więc wynik jest w wierszach, a następnie w tablicy _rodzajowej, tam właśnie
żyją nasze dane.
Właśnie tego potrzebujemy w pliku akcji miejsc tutaj, gdy wysyłamy nasze miejsca, które chcemy wyświetlić,
które chcemy załadować do
Redux, które powinny być dbResult. wydziwianie. _szyk.
Teraz oczywiście wyzwala to akcje ustawionych miejsc, więc teraz w reduktorze miejsc musimy się tym
przejmować, więc
tutaj dodaję skrzynkę, ustawiam miejsca, upewnij się, że importujesz
identyfikator ustawionego miejsca tutaj i w ustawionych miejscach W takim przypadku mogę zwrócić nową migawkę stanu, w której
moje miejsca są zasadniczo ustawione na miejsca, które wróciłem z bazy danych, i
robię to, ustawiając je na działanie. miejsc, ponieważ w moim pliku działań mam ten
klucz
miejsca w akcji po prawej stronie,
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
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
jest opcjonalny, chcę tylko pokazać, jak
można również przekształcić dane, jeśli zajdzie taka potrzeba, można to zrobić
za pomocą metody mapy który mapuje tę tablicę na nową.
Więc robię to, zachowuję tytuł, zachowuję imageUri i po prostu nie potrzebuję adresu i szerokości geograficznej itd. Właśnie
dlatego mapuję
to, aby móc sporządzić pewne dane, więc teraz
mapuję tę tablicę miejsc, które ładuję do nowej tablicy miejsc, w których dbam tylko o identyfikator,
tytuł i imageUri.
Teraz, jeśli to uratujemy, powinniśmy być w stanie zobaczyć, jak nasze miejsca są ładowane tutaj na Androidzie, to
jedno miejsce, które wcześniej przechowaliśmy i rzeczywiście jest. To nasze miejsce, miejsce
załadowane. Dzięki temu
możemy teraz skupić się również na uzyskaniu lokalizacji użytkownika.