Po zainicjowaniu bazy danych upewnijmy się, że możemy tam przechowywać dane.
Wróćmy do db. plik js w folderze helpers, możemy dodać nową stałą, wstawić
miejsce na przykład,
które eksportuję, a teraz tutaj chcę uzyskać tytuł miejsca, chcę uzyskać imageUri, chcę uzyskać adres, a także szerokość
i długość geograficzna, więc chcę uzyskać wszystkie dane, które składają się na miejsce, i tam,
teraz chcę wstawić to miejsce do bazy danych. W tym celu użyjemy tej samej składni,
co tutaj, więc mogę to po prostu skopiować, ponieważ chcę też mieć obietnicę jako opakowanie, aby
móc wygodnie wtedy użyć i złapać lub asynchronizować w miejscu, w którym nazywam wstawić
miejsce ale oczywiście zapytanie, które teraz wykonuję, jest inne.
Zamiast tworzyć tabelę, chcę teraz wstawić dane
do tabeli i to zrobić za pomocą polecenia wstaw do.
Teraz musisz określić tabelę i miejsca, a następnie między nawiasami pola, które chcesz tam kierować i
oczywiście chcę
kierować wszystkie pola oprócz identyfikatora, ponieważ, jak już wspomniałem, będzie on generowany automatycznie, co jest
bardzo wygodne Oczywiście, ale
chcę kierować na moje pole tytułu, a teraz musisz się upewnić, że pasujesz do
nazw, które ustawiłeś dla swoich
kolumn, musisz teraz dopasować te nazwy tutaj.
Kolejność nie musi być taka sama, ale nazwa jest ważna,
więc chcę kierować na tytuł, imageUri,
to też nazwa, którą tam wybrałem, prawda?
Więc imageUri, adres, szerokość i
długość geograficzna, a teraz
musimy określić, jakie wartości powinny tam się znaleźć.
Robisz to, dodając tutaj słowo kluczowe wartości za tą listą kolumn, na które chcesz kierować, a teraz
masz tutaj kolejną parę nawiasów, w których określasz wartości, które powinny się znaleźć w każdej z
tych kolumn.
Teraz kolejność wartości tutaj musi oczywiście odpowiadać kolejności identyfikatorów kolumn, które
masz tutaj, więc pierwsza wprowadzona tutaj wartość przejdzie do tytułu, imageUri to druga wartość i tak dalej.
Teraz możesz użyć oczywiście cofania zamiast pojedynczych cudzysłowów, a następnie
na przykład wstawić tytuł tutaj, a następnie przecinek, a następnie imageUri i tak dalej.
Mógłbyś to zrobić i to by działało, ale to
nie byłoby dobre,
to nie jest bezpieczne, otwiera drzwi do wzorca ataku zwanego wstrzykiwaniem SQL, w którym użytkownicy mogą być może wstawić tam złośliwy kod
i uruchomić inne zapytania, które mogłyby się zepsuć baza danych.
Oczywiście w tej aplikacji, w której jest to lokalna baza danych tylko na urządzeniu tego użytkownika,
to może nie być bardzo złe, ale nadal chcemy się przed tym bronić i dlatego tutaj faktycznie używasz kilku
symboli zastępczych, dodajesz tutaj znaki zapytania i potrzebujesz aby dodać tyle znaków zapytania, ile trzeba wprowadzić wartości.
Więc tutaj wpisuję pięć wartości, stąd mam pięć znaków zapytania oddzielonych przecinkami.
Teraz konkretne wartości znaków zapytania podano w drugim argumencie przekazanym w celu wykonania
SQL - tej tablicy argumentów. Wcześniej było puste, teraz
wypełniamy argumenty w kolejności, w jakiej ich potrzebujemy, więc
najpierw tytułem, potem imageUri i tak dalej, a pakiet SQL zamieni te znaki zapytania na nasze wartości, ale
nie przed sprawdzeniem ich poprawności, aby upewnić się, że taki atak iniekcyjny nie może się zdarzyć.
Tak więc otrzymujemy dodatkową automatyczną weryfikację za pomocą tego podejścia, a następnie możemy wprowadzić tutaj tytuł, następnie
drugim elementem danych był imageUri, następnie potrzebujemy adresu, następnie
potrzebujemy szerokości
geograficznej, a następnie potrzebujemy długości geograficznej, więc to
właśnie w ten sposób przekazujemy nasze dane do tego zapytania. Teraz w tych funkcjach sukcesu, jak wspomniałem,
pierwszy argument jest zawsze jak powtórzenie twojego zapytania, ale drugi argument
to albo błąd, albo tutaj wynik tego zapytania
i tutaj chcę rozwiązać ten wynik, aby w miejscu, w którym nazywamy wstawić
miejsce, wtedy możemy faktycznie wysłuchać rozwiązania obietnicy i uzyskać wynik tego zapytania, który powinien
zawierać informacje o utworzonym rekordzie.
Teraz możemy wywołać insert place i oczywiście miejscem, w którym chcę to ponownie wywołać, jest plik akcji
miejsc.
Tam przenosimy obraz, tam też
chcę teraz sięgnąć do mojej bazy danych i dodać wpis. Aby to zrobić tutaj przede
wszystkim, zaimportujmy tę metodę wstawiania miejsca z folderu helpers i tam, z pliku db iz tym importowanym, dodajmy miejsce po rozwiązaniu naszego
systemu plików i tak dalej, tutaj oczywiście również nadal w
bloku try catch chcesz spróbować wstawić dane do bazy danych.
To również może
się nie powieść, więc posiadanie go w bloku try nie jest najgorszym pomysłem.
Więc tutaj mogę nazwać insert place, a to zwraca obietnicę, ponieważ mamy tam swoją własną
obietnicę, więc możemy
na nią poczekać, a potem otrzymam wynik DB, więc zachowam to w stałym
miejscu i oczywiście wstawię miejsce potrzebuje tytułu, imageUri, adresu, szerokości i długości geograficznej.
Teraz przekażę mój tytuł, który już mam,
przekażę nową ścieżkę, która jest moim imageUri, a teraz jako adres użyję fikcyjnego adresu, ponieważ nie mamy jeszcze
prawdziwego adresu. Dla szerokości
geograficznej użyję fikcyjnego numeru 15. 6, a dla długości geograficznej, powiedzmy 12. 3)
To może być na środku oceanu, nie wiem, ale przynajmniej
mamy tutaj współrzędne, których możemy teraz użyć, dopóki nie będziemy w stanie znaleźć prawdziwej lokalizacji.
Teraz ten wynik db jest oczywiście interesujący, więc zalogujmy się na konsoli, a przy okazji upewnijmy się, że
wysyłamy tylko tę akcję, a zatem dotykamy naszego sklepu Redux, jeśli uda nam się zarówno system
plików, jak i akcja bazy danych,
więc wewnątrz spróbuj zablokować, a teraz spójrzmy na to. Teraz powinniśmy móc przechowywać dane w
bazie
danych, więc przetestujmy to na Androidzie, gdzie możemy
zrobić zdjęcie, to jest test.
Zróbmy tutaj zdjęcie i zobaczmy, czy to wszystko działa, teraz przycinając to zdjęcie i zapisując to miejsce.
To działa
i tutaj widzimy dane wyjściowe, widzimy, że jest to wynik naszej akcji bazy
danych i widzimy, że wpłynęło to na jeden wiersz, ponieważ wstawiono jeden wiersz, a także
otrzymaliśmy automatycznie utworzony identyfikator.
Jest to tutaj identyfikator numeryczny, ale to oczywiście żaden
problem, więc teraz możemy również użyć tego identyfikatora w naszym reduktorze zamiast ręcznie tworzyć tutaj ten identyfikator
stanu migawki.
To drobna poprawa, kiedy
wysyłamy naszą akcję tutaj w danych miejsca, teraz chcę również podać identyfikator, który można pobrać ze
stałej wyniku DB i tam, jak widać, jest on w polu wstawiania identyfikatora
, więc przejdźmy tutaj do wstawienia identyfikatora. Dlatego w reduktorze nie musimy już generować go w ten sposób, zamiast tego możemy po
prostu odwołać się do akcji. placeData. ID.
Teraz pamiętaj, że jest to liczba, tutaj naprawdę chcę mieć ciąg,
chociaż możesz również zachować numer, ale przekonwertuję go na ciąg tutaj i dzięki temu teraz używamy również
tego identyfikatora, przechowujemy to w bazie danych. Oczywiście teraz byłoby miło załadować wszystkie nasze dane przy każdym ponownym uruchomieniu
aplikacji, ponieważ teraz, gdy się ponownie uruchamia, dane wciąż są
tracone, nie są tak naprawdę utracone, nie jest
to baza danych, ale nie widzimy ich tutaj, ponieważ nie ładuj tego do naszego sklepu Redux, który to oczywiście dane,
których używamy w uruchomionej aplikacji.
Musimy więc upewnić się, że ładujemy dane do sklepu Redux po uruchomieniu tej aplikacji.