1 00:00:02,180 --> 00:00:05,750 Po zainicjowaniu bazy danych upewnijmy się, że możemy tam przechowywać dane. 2 00:00:05,750 --> 00:00:13,460 Wróćmy do db. plik js w folderze helpers, możemy dodać nową stałą, wstawić 3 00:00:13,460 --> 00:00:14,850 miejsce na przykład, 4 00:00:15,110 --> 00:00:21,650 które eksportuję, a teraz tutaj chcę uzyskać tytuł miejsca, chcę uzyskać imageUri, chcę uzyskać adres, a także szerokość 5 00:00:21,930 --> 00:00:27,770 i długość geograficzna, więc chcę uzyskać wszystkie dane, które składają się na miejsce, i tam, 6 00:00:27,800 --> 00:00:33,950 teraz chcę wstawić to miejsce do bazy danych. W tym celu użyjemy tej samej składni, 7 00:00:33,950 --> 00:00:39,890 co tutaj, więc mogę to po prostu skopiować, ponieważ chcę też mieć obietnicę jako opakowanie, aby 8 00:00:39,890 --> 00:00:45,430 móc wygodnie wtedy użyć i złapać lub asynchronizować w miejscu, w którym nazywam wstawić 9 00:00:45,560 --> 00:00:49,010 miejsce ale oczywiście zapytanie, które teraz wykonuję, jest inne. 10 00:00:49,010 --> 00:00:52,380 Zamiast tworzyć tabelę, chcę teraz wstawić dane 11 00:00:52,400 --> 00:00:56,620 do tabeli i to zrobić za pomocą polecenia wstaw do. 12 00:00:56,660 --> 00:01:02,450 Teraz musisz określić tabelę i miejsca, a następnie między nawiasami pola, które chcesz tam kierować i 13 00:01:02,450 --> 00:01:03,380 oczywiście chcę 14 00:01:03,410 --> 00:01:08,840 kierować wszystkie pola oprócz identyfikatora, ponieważ, jak już wspomniałem, będzie on generowany automatycznie, co jest 15 00:01:08,840 --> 00:01:10,320 bardzo wygodne Oczywiście, ale 16 00:01:10,520 --> 00:01:15,510 chcę kierować na moje pole tytułu, a teraz musisz się upewnić, że pasujesz do 17 00:01:15,510 --> 00:01:17,360 nazw, które ustawiłeś dla swoich 18 00:01:17,450 --> 00:01:20,150 kolumn, musisz teraz dopasować te nazwy tutaj. 19 00:01:20,180 --> 00:01:24,480 Kolejność nie musi być taka sama, ale nazwa jest ważna, 20 00:01:24,500 --> 00:01:27,400 więc chcę kierować na tytuł, imageUri, 21 00:01:27,410 --> 00:01:30,360 to też nazwa, którą tam wybrałem, prawda? 22 00:01:30,440 --> 00:01:32,660 Więc imageUri, adres, szerokość i 23 00:01:32,660 --> 00:01:34,610 długość geograficzna, a teraz 24 00:01:34,610 --> 00:01:38,110 musimy określić, jakie wartości powinny tam się znaleźć. 25 00:01:38,120 --> 00:01:44,260 Robisz to, dodając tutaj słowo kluczowe wartości za tą listą kolumn, na które chcesz kierować, a teraz 26 00:01:44,310 --> 00:01:50,330 masz tutaj kolejną parę nawiasów, w których określasz wartości, które powinny się znaleźć w każdej z 27 00:01:50,330 --> 00:01:51,310 tych kolumn. 28 00:01:51,320 --> 00:01:56,120 Teraz kolejność wartości tutaj musi oczywiście odpowiadać kolejności identyfikatorów kolumn, które 29 00:01:56,150 --> 00:02:02,820 masz tutaj, więc pierwsza wprowadzona tutaj wartość przejdzie do tytułu, imageUri to druga wartość i tak dalej. 30 00:02:02,840 --> 00:02:08,570 Teraz możesz użyć oczywiście cofania zamiast pojedynczych cudzysłowów, a następnie 31 00:02:08,570 --> 00:02:15,970 na przykład wstawić tytuł tutaj, a następnie przecinek, a następnie imageUri i tak dalej. 32 00:02:15,970 --> 00:02:20,270 Mógłbyś to zrobić i to by działało, ale to 33 00:02:20,290 --> 00:02:21,940 nie byłoby dobre, 34 00:02:21,940 --> 00:02:32,350 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 35 00:02:32,350 --> 00:02:37,240 i uruchomić inne zapytania, które mogłyby się zepsuć baza danych. 36 00:02:37,240 --> 00:02:42,210 Oczywiście w tej aplikacji, w której jest to lokalna baza danych tylko na urządzeniu tego użytkownika, 37 00:02:42,210 --> 00:02:47,830 to może nie być bardzo złe, ale nadal chcemy się przed tym bronić i dlatego tutaj faktycznie używasz kilku 38 00:02:47,850 --> 00:02:52,960 symboli zastępczych, dodajesz tutaj znaki zapytania i potrzebujesz aby dodać tyle znaków zapytania, ile trzeba wprowadzić wartości. 39 00:02:53,050 --> 00:02:58,450 Więc tutaj wpisuję pięć wartości, stąd mam pięć znaków zapytania oddzielonych przecinkami. 40 00:02:58,540 --> 00:03:03,700 Teraz konkretne wartości znaków zapytania podano w drugim argumencie przekazanym w celu wykonania 41 00:03:03,700 --> 00:03:07,990 SQL - tej tablicy argumentów. Wcześniej było puste, teraz 42 00:03:08,020 --> 00:03:11,860 wypełniamy argumenty w kolejności, w jakiej ich potrzebujemy, więc 43 00:03:11,860 --> 00:03:19,570 najpierw tytułem, potem imageUri i tak dalej, a pakiet SQL zamieni te znaki zapytania na nasze wartości, ale 44 00:03:19,810 --> 00:03:27,030 nie przed sprawdzeniem ich poprawności, aby upewnić się, że taki atak iniekcyjny nie może się zdarzyć. 45 00:03:27,070 --> 00:03:33,050 Tak więc otrzymujemy dodatkową automatyczną weryfikację za pomocą tego podejścia, a następnie możemy wprowadzić tutaj tytuł, następnie 46 00:03:33,160 --> 00:03:36,040 drugim elementem danych był imageUri, następnie potrzebujemy adresu, następnie 47 00:03:36,280 --> 00:03:37,450 potrzebujemy szerokości 48 00:03:37,450 --> 00:03:40,210 geograficznej, a następnie potrzebujemy długości geograficznej, więc to 49 00:03:40,240 --> 00:03:47,310 właśnie w ten sposób przekazujemy nasze dane do tego zapytania. Teraz w tych funkcjach sukcesu, jak wspomniałem, 50 00:03:47,320 --> 00:03:52,510 pierwszy argument jest zawsze jak powtórzenie twojego zapytania, ale drugi argument 51 00:03:52,510 --> 00:03:56,540 to albo błąd, albo tutaj wynik tego zapytania 52 00:03:56,650 --> 00:04:02,910 i tutaj chcę rozwiązać ten wynik, aby w miejscu, w którym nazywamy wstawić 53 00:04:02,910 --> 00:04:09,490 miejsce, wtedy możemy faktycznie wysłuchać rozwiązania obietnicy i uzyskać wynik tego zapytania, który powinien 54 00:04:09,490 --> 00:04:12,640 zawierać informacje o utworzonym rekordzie. 55 00:04:12,650 --> 00:04:18,730 Teraz możemy wywołać insert place i oczywiście miejscem, w którym chcę to ponownie wywołać, jest plik akcji 56 00:04:18,730 --> 00:04:19,370 miejsc. 57 00:04:19,610 --> 00:04:21,810 Tam przenosimy obraz, tam też 58 00:04:21,830 --> 00:04:28,700 chcę teraz sięgnąć do mojej bazy danych i dodać wpis. Aby to zrobić tutaj przede 59 00:04:28,910 --> 00:04:40,980 wszystkim, zaimportujmy tę metodę wstawiania miejsca z folderu helpers i tam, z pliku db iz tym importowanym, dodajmy miejsce po rozwiązaniu naszego 60 00:04:41,100 --> 00:04:46,450 systemu plików i tak dalej, tutaj oczywiście również nadal w 61 00:04:46,470 --> 00:04:52,290 bloku try catch chcesz spróbować wstawić dane do bazy danych. 62 00:04:52,380 --> 00:04:53,520 To również może 63 00:04:53,520 --> 00:04:57,600 się nie powieść, więc posiadanie go w bloku try nie jest najgorszym pomysłem. 64 00:04:57,630 --> 00:05:03,930 Więc tutaj mogę nazwać insert place, a to zwraca obietnicę, ponieważ mamy tam swoją własną 65 00:05:03,930 --> 00:05:05,370 obietnicę, więc możemy 66 00:05:05,730 --> 00:05:11,460 na nią poczekać, a potem otrzymam wynik DB, więc zachowam to w stałym 67 00:05:11,460 --> 00:05:17,200 miejscu i oczywiście wstawię miejsce potrzebuje tytułu, imageUri, adresu, szerokości i długości geograficznej. 68 00:05:17,270 --> 00:05:19,960 Teraz przekażę mój tytuł, który już mam, 69 00:05:19,960 --> 00:05:27,240 przekażę nową ścieżkę, która jest moim imageUri, a teraz jako adres użyję fikcyjnego adresu, ponieważ nie mamy jeszcze 70 00:05:27,240 --> 00:05:29,700 prawdziwego adresu. Dla szerokości 71 00:05:29,700 --> 00:05:35,760 geograficznej użyję fikcyjnego numeru 15. 6, a dla długości geograficznej, powiedzmy 12. 3) 72 00:05:35,760 --> 00:05:39,750 To może być na środku oceanu, nie wiem, ale przynajmniej 73 00:05:39,780 --> 00:05:45,730 mamy tutaj współrzędne, których możemy teraz użyć, dopóki nie będziemy w stanie znaleźć prawdziwej lokalizacji. 74 00:05:45,750 --> 00:05:51,960 Teraz ten wynik db jest oczywiście interesujący, więc zalogujmy się na konsoli, a przy okazji upewnijmy się, że 75 00:05:51,960 --> 00:05:57,730 wysyłamy tylko tę akcję, a zatem dotykamy naszego sklepu Redux, jeśli uda nam się zarówno system 76 00:05:57,730 --> 00:06:00,330 plików, jak i akcja bazy danych, 77 00:06:00,330 --> 00:06:06,690 więc wewnątrz spróbuj zablokować, a teraz spójrzmy na to. Teraz powinniśmy móc przechowywać dane w 78 00:06:06,690 --> 00:06:07,740 bazie 79 00:06:07,770 --> 00:06:11,790 danych, więc przetestujmy to na Androidzie, gdzie możemy 80 00:06:11,790 --> 00:06:14,240 zrobić zdjęcie, to jest test. 81 00:06:14,270 --> 00:06:24,980 Zróbmy tutaj zdjęcie i zobaczmy, czy to wszystko działa, teraz przycinając to zdjęcie i zapisując to miejsce. 82 00:06:25,090 --> 00:06:26,280 To działa 83 00:06:26,380 --> 00:06:31,380 i tutaj widzimy dane wyjściowe, widzimy, że jest to wynik naszej akcji bazy 84 00:06:31,480 --> 00:06:37,000 danych i widzimy, że wpłynęło to na jeden wiersz, ponieważ wstawiono jeden wiersz, a także 85 00:06:37,000 --> 00:06:38,460 otrzymaliśmy automatycznie utworzony identyfikator. 86 00:06:38,500 --> 00:06:41,710 Jest to tutaj identyfikator numeryczny, ale to oczywiście żaden 87 00:06:41,710 --> 00:06:47,920 problem, więc teraz możemy również użyć tego identyfikatora w naszym reduktorze zamiast ręcznie tworzyć tutaj ten identyfikator 88 00:06:47,920 --> 00:06:49,060 stanu migawki. 89 00:06:49,060 --> 00:06:51,520 To drobna poprawa, kiedy 90 00:06:51,520 --> 00:06:59,600 wysyłamy naszą akcję tutaj w danych miejsca, teraz chcę również podać identyfikator, który można pobrać ze 91 00:06:59,600 --> 00:07:06,170 stałej wyniku DB i tam, jak widać, jest on w polu wstawiania identyfikatora 92 00:07:06,170 --> 00:07:13,000 , 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 93 00:07:13,000 --> 00:07:17,330 prostu odwołać się do akcji. placeData. ID. 94 00:07:17,330 --> 00:07:22,100 Teraz pamiętaj, że jest to liczba, tutaj naprawdę chcę mieć ciąg, 95 00:07:22,100 --> 00:07:28,760 chociaż możesz również zachować numer, ale przekonwertuję go na ciąg tutaj i dzięki temu teraz używamy również 96 00:07:28,760 --> 00:07:34,850 tego identyfikatora, przechowujemy to w bazie danych. Oczywiście teraz byłoby miło załadować wszystkie nasze dane przy każdym ponownym uruchomieniu 97 00:07:34,850 --> 00:07:37,580 aplikacji, ponieważ teraz, gdy się ponownie uruchamia, dane wciąż są 98 00:07:37,700 --> 00:07:39,950 tracone, nie są tak naprawdę utracone, nie jest 99 00:07:39,950 --> 00:07:45,230 to baza danych, ale nie widzimy ich tutaj, ponieważ nie ładuj tego do naszego sklepu Redux, który to oczywiście dane, 100 00:07:45,230 --> 00:07:46,640 których używamy w uruchomionej aplikacji. 101 00:07:46,940 --> 00:07:50,840 Musimy więc upewnić się, że ładujemy dane do sklepu Redux po uruchomieniu tej aplikacji.