1 00:00:02,180 --> 00:00:05,750 Con il database inizializzato, assicuriamoci di poter archiviare i dati lì dentro. 2 00:00:05,750 --> 00:00:13,460 Quindi torna nel db. file js nella cartella helper, possiamo aggiungere una nuova costante, inserire 3 00:00:13,460 --> 00:00:14,850 un posto per 4 00:00:15,110 --> 00:00:21,650 esempio che esporto e ora qui voglio ottenere il titolo del posto, voglio ottenere l'immagineUri, voglio ottenere l'indirizzo e 5 00:00:21,930 --> 00:00:27,770 anche un latitudine e longitudine, quindi voglio ottenere tutti i dati che compongono un luogo e lì 6 00:00:27,800 --> 00:00:33,950 dentro, ora voglio inserire il luogo nel database. Per questo, useremo la stessa sintassi di qui 7 00:00:33,950 --> 00:00:39,890 in modo che io possa semplicemente copiarlo perché voglio anche avere una promessa come wrapper qui in modo 8 00:00:39,890 --> 00:00:45,430 da poter usare comodamente quindi e catturare o asincrare attendere nel luogo in cui chiamo inserire 9 00:00:45,560 --> 00:00:49,010 posto ma ovviamente la query che eseguo ora è diversa. 10 00:00:49,010 --> 00:00:52,380 Invece di creare una tabella, ora voglio inserire 11 00:00:52,400 --> 00:00:56,620 i dati nella tabella e questo viene fatto con l'inserimento nel comando. 12 00:00:56,660 --> 00:01:02,450 Ora devi specificare la tabella e che sono i posti e quindi tra parentesi, i campi che vuoi targetizzare 13 00:01:02,450 --> 00:01:03,380 lì e 14 00:01:03,410 --> 00:01:08,840 ovviamente voglio scegliere come target tutti i campi tranne l'ID perché, come ho già detto, sarà generato automaticamente 15 00:01:08,840 --> 00:01:10,320 che è molto conveniente 16 00:01:10,520 --> 00:01:15,510 Certo, ma voglio indirizzare il mio campo del titolo e ora devi assicurarti di abbinare i 17 00:01:15,510 --> 00:01:17,360 nomi che hai impostato lì per 18 00:01:17,450 --> 00:01:20,150 le tue colonne, devi abbinare questi nomi qui ora. 19 00:01:20,180 --> 00:01:24,480 L'ordine non deve essere lo stesso ma la denominazione è importante, quindi voglio 20 00:01:24,500 --> 00:01:27,400 scegliere come target il titolo, imageUri, che 21 00:01:27,410 --> 00:01:30,360 è anche un nome che ho scelto lassù, giusto? 22 00:01:30,440 --> 00:01:32,660 Quindi imageUri, indirizzo, latitudine e 23 00:01:32,660 --> 00:01:34,610 longitudine e ora 24 00:01:34,610 --> 00:01:38,110 dobbiamo specificare quali valori dovrebbero andare lì. 25 00:01:38,120 --> 00:01:44,260 Puoi farlo aggiungendo qui la parola chiave valori dopo questo elenco di colonne che vuoi scegliere come target 26 00:01:44,310 --> 00:01:50,330 e ora hai un'altra coppia di parentesi qui dove specifichi i valori che dovrebbero andare in ciascuna di 27 00:01:50,330 --> 00:01:51,310 queste colonne. 28 00:01:51,320 --> 00:01:56,120 Ora l'ordine dei valori qui deve ovviamente corrispondere all'ordine degli identificatori di colonna che 29 00:01:56,150 --> 00:02:02,820 hai qui, quindi il primo valore che inserisci qui andrà nel titolo, imageUri è il secondo valore e così via. 30 00:02:02,840 --> 00:02:08,570 Ora quello che potresti fare qui è che puoi usare ovviamente i segni di spunta al posto 31 00:02:08,570 --> 00:02:15,970 invece di virgolette singole e quindi, ad esempio, inserire il titolo qui e quindi avere una virgola e quindi l'immagineUri e così via. 32 00:02:15,970 --> 00:02:20,270 Potresti farlo e funzionerebbe ma questo non sarebbe buono, 33 00:02:20,290 --> 00:02:21,940 questo non è 34 00:02:21,940 --> 00:02:32,350 sicuro, apre una porta per un modello di attacco chiamato SQL injection, in cui gli utenti potrebbero in qualche modo inserire un codice 35 00:02:32,350 --> 00:02:37,240 malevolo ed eseguire altre query che potrebbero rompersi il database. 36 00:02:37,240 --> 00:02:42,210 Ovviamente in questa app in cui si trova un database locale proprio sul dispositivo di questo utente, 37 00:02:42,210 --> 00:02:47,830 potrebbe non essere molto male ma comunque vogliamo difenderci da questo e quindi qui, in realtà usi un paio di segnaposto, 38 00:02:47,850 --> 00:02:52,960 aggiungi punti di domanda qui e hai bisogno per aggiungere tutti i punti interrogativi necessari per inserire i valori. 39 00:02:53,050 --> 00:02:58,450 Quindi qui sto inserendo cinque valori, quindi qui ho cinque punti interrogativi separati da virgole. 40 00:02:58,540 --> 00:03:03,700 Ora i valori concreti per i punti interrogativi sono forniti nel secondo argomento che si passa per 41 00:03:03,700 --> 00:03:07,990 eseguire SQL, questo array di argomenti. In precedenza era vuoto, ora 42 00:03:08,020 --> 00:03:11,860 compiliamo gli argomenti nell'ordine in cui ne abbiamo bisogno, 43 00:03:11,860 --> 00:03:19,570 quindi prima titolo, quindi imageUri e così via e il pacchetto SQL sostituirà quindi questi punti interrogativi con i 44 00:03:19,810 --> 00:03:27,030 nostri valori, ma non prima di convalidarli per garantire che tale l'attacco per iniezione non può avvenire. 45 00:03:27,070 --> 00:03:33,050 Quindi otteniamo una convalida automatica aggiuntiva usando questo approccio e quindi possiamo inserire il titolo qui, quindi il secondo 46 00:03:33,160 --> 00:03:36,040 pezzo di dati era imageUri, quindi abbiamo bisogno dell'indirizzo, 47 00:03:36,280 --> 00:03:37,450 quindi abbiamo bisogno 48 00:03:37,450 --> 00:03:40,210 della latitudine e quindi abbiamo bisogno della longitudine, quindi 49 00:03:40,240 --> 00:03:47,310 questo è come ora passiamo i nostri dati a questa query. Ora in queste funzioni di successo, come ho già 50 00:03:47,320 --> 00:03:52,510 detto, il primo argomento è sempre come la ripetizione della tua query, ma il secondo 51 00:03:52,510 --> 00:03:56,540 argomento è quindi l'errore o qui il risultato di questa query 52 00:03:56,650 --> 00:04:02,910 e qui voglio risolvere questo risultato in modo che nel posto in cui chiamiamo insert place, quindi 53 00:04:02,910 --> 00:04:09,490 possiamo effettivamente ascoltare la risoluzione della promessa e ottenere il nostro risultato di questa query che dovrebbe essere 54 00:04:09,490 --> 00:04:12,640 alcune informazioni sul record che è stato creato. 55 00:04:12,650 --> 00:04:18,730 Quindi ora possiamo chiamare inserire posto e, naturalmente, il posto in cui voglio chiamarlo di nuovo è il mio file di azioni 56 00:04:18,730 --> 00:04:19,370 di luoghi. 57 00:04:19,610 --> 00:04:21,810 Lì spostiamo l'immagine, ora voglio 58 00:04:21,830 --> 00:04:28,700 anche raggiungere il mio database e aggiungere una voce. Per fare questo prima di tutto, 59 00:04:28,910 --> 00:04:40,980 importiamo questo metodo di inserimento del posto dalla cartella degli helper e lì, dal file db e con quello importato, in aggiunta dopo aver risolto 60 00:04:41,100 --> 00:04:46,450 il nostro filesystem e così via, qui ovviamente ovviamente anche, ancora 61 00:04:46,470 --> 00:04:52,290 nel blocco try catch, si desidera provare a inserire dati nel database. 62 00:04:52,380 --> 00:04:53,520 Anche questo può 63 00:04:53,520 --> 00:04:57,600 fallire, quindi averlo in un blocco try non è la peggiore idea. 64 00:04:57,630 --> 00:05:03,930 Quindi qui posso chiamare insert place e questo restituisce una promessa perché abbiamo la nostra promessa lì dentro, quindi 65 00:05:03,930 --> 00:05:05,370 possiamo aspettare questo 66 00:05:05,730 --> 00:05:11,460 e in seguito riprendo il mio risultato DB, quindi lo memorizzerò in una costante e ora 67 00:05:11,460 --> 00:05:17,200 inserirò ovviamente il luogo ha bisogno di un titolo, un'immagineUri, un indirizzo, una latitudine e una longitudine. 68 00:05:17,270 --> 00:05:19,960 Ora quindi inoltrerò il mio titolo che già 69 00:05:19,960 --> 00:05:27,240 ho, inoltrerò il nuovo percorso che è la mia immagineUri e ora per l'indirizzo, userò un indirizzo fittizio perché non abbiamo ancora 70 00:05:27,240 --> 00:05:29,700 un indirizzo reale. Per la latitudine, 71 00:05:29,700 --> 00:05:35,760 userò un numero fittizio di 15. 6 e per longitudine, diciamo 12. 3. 72 00:05:35,760 --> 00:05:39,750 Ora questo potrebbe essere nel mezzo dell'oceano, non lo so, ma almeno qui 73 00:05:39,780 --> 00:05:45,730 abbiamo alcune coordinate che possiamo usare per ora fino a quando non saremo in grado di recuperare una posizione reale. 74 00:05:45,750 --> 00:05:51,960 Ora questo risultato db ovviamente è interessante, quindi consolliamolo dalla console e assicuriamoci anche di spedire questa azione 75 00:05:51,960 --> 00:05:57,730 e quindi toccare il nostro archivio Redux se siamo riusciti sia con il filesystem che con 76 00:05:57,730 --> 00:06:00,330 l'azione del database, quindi all'interno del 77 00:06:00,330 --> 00:06:06,690 prova a bloccare e ora diamo un'occhiata a questo. Ora dovremmo essere in grado di archiviare 78 00:06:06,690 --> 00:06:07,740 i dati 79 00:06:07,770 --> 00:06:11,790 nel database, quindi proviamo questo su Android dove possiamo prendere 80 00:06:11,790 --> 00:06:14,240 un'immagine, questo è un test. 81 00:06:14,270 --> 00:06:24,980 Prendiamo un'immagine qui e vediamo se tutto ciò funziona ormai ritagliando quell'immagine e salvando questo posto. 82 00:06:25,090 --> 00:06:26,280 Funziona e qui 83 00:06:26,380 --> 00:06:31,380 vediamo un po 'di output, vediamo che questo è il risultato della nostra azione sul database 84 00:06:31,480 --> 00:06:37,000 e vediamo che una riga è stata interessata perché è stata inserita una riga e otteniamo anche l'ID 85 00:06:37,000 --> 00:06:38,460 che è stato creato automaticamente. 86 00:06:38,500 --> 00:06:41,710 È un ID numerico qui, ma ovviamente non c'è 87 00:06:41,710 --> 00:06:47,920 problema, quindi ora possiamo anche usare questo ID nel nostro riduttore invece di creare manualmente questo ID istantanea 88 00:06:47,920 --> 00:06:49,060 dello stato qui. 89 00:06:49,060 --> 00:06:51,520 Quindi questo è un piccolo 90 00:06:51,520 --> 00:06:59,600 miglioramento, quando inviamo la nostra azione qui nei dati del luogo, ora voglio anche fornire l'ID e quell'ID può essere 91 00:06:59,600 --> 00:07:06,170 recuperato dalla costante del risultato del DB e lì, è nel campo Inserisci ID qui come 92 00:07:06,170 --> 00:07:13,000 puoi vedere , quindi accediamo a inserire ID qui. Ora nel riduttore quindi, non abbiamo più bisogno di generarlo in questo modo, invece qui 93 00:07:13,000 --> 00:07:17,330 possiamo semplicemente fare riferimento all'azione. placeData. id. 94 00:07:17,330 --> 00:07:22,100 Ora tieni presente che c'è un numero, qui in realtà voglio avere una 95 00:07:22,100 --> 00:07:28,760 stringa anche se potresti anche tenere un numero ma lo convertirò in una stringa qui e con quello, ora 96 00:07:28,760 --> 00:07:34,850 stiamo usando anche quell'ID, stiamo memorizzando nel database. Naturalmente ora sarebbe bello caricare tutti i nostri dati ogni volta che la 97 00:07:34,850 --> 00:07:37,580 nostra app si riavvia perché in questo momento quando si riavvia, 98 00:07:37,700 --> 00:07:39,950 i dati vengono comunque persi, non sono realmente persi, 99 00:07:39,950 --> 00:07:45,230 non è un database ma non li vediamo qui perché noi non caricarlo nel nostro negozio Redux, che ovviamente sono i dati 100 00:07:45,230 --> 00:07:46,640 che utilizziamo nell'app in esecuzione. 101 00:07:46,940 --> 00:07:50,840 Quindi dobbiamo assicurarci di caricare i dati nel negozio Redux all'avvio di questa app.