Con il database inizializzato, assicuriamoci di poter archiviare i dati lì dentro.
Quindi torna nel db. file js nella cartella helper, possiamo aggiungere una nuova costante, inserire
un posto per
esempio che esporto e ora qui voglio ottenere il titolo del posto, voglio ottenere l'immagineUri, voglio ottenere l'indirizzo e
anche un latitudine e longitudine, quindi voglio ottenere tutti i dati che compongono un luogo e lì
dentro, ora voglio inserire il luogo nel database. Per questo, useremo la stessa sintassi di qui
in modo che io possa semplicemente copiarlo perché voglio anche avere una promessa come wrapper qui in modo
da poter usare comodamente quindi e catturare o asincrare attendere nel luogo in cui chiamo inserire
posto ma ovviamente la query che eseguo ora è diversa.
Invece di creare una tabella, ora voglio inserire
i dati nella tabella e questo viene fatto con l'inserimento nel comando.
Ora devi specificare la tabella e che sono i posti e quindi tra parentesi, i campi che vuoi targetizzare
lì e
ovviamente voglio scegliere come target tutti i campi tranne l'ID perché, come ho già detto, sarà generato automaticamente
che è molto conveniente
Certo, ma voglio indirizzare il mio campo del titolo e ora devi assicurarti di abbinare i
nomi che hai impostato lì per
le tue colonne, devi abbinare questi nomi qui ora.
L'ordine non deve essere lo stesso ma la denominazione è importante, quindi voglio
scegliere come target il titolo, imageUri, che
è anche un nome che ho scelto lassù, giusto?
Quindi imageUri, indirizzo, latitudine e
longitudine e ora
dobbiamo specificare quali valori dovrebbero andare lì.
Puoi farlo aggiungendo qui la parola chiave valori dopo questo elenco di colonne che vuoi scegliere come target
e ora hai un'altra coppia di parentesi qui dove specifichi i valori che dovrebbero andare in ciascuna di
queste colonne.
Ora l'ordine dei valori qui deve ovviamente corrispondere all'ordine degli identificatori di colonna che
hai qui, quindi il primo valore che inserisci qui andrà nel titolo, imageUri è il secondo valore e così via.
Ora quello che potresti fare qui è che puoi usare ovviamente i segni di spunta al posto
invece di virgolette singole e quindi, ad esempio, inserire il titolo qui e quindi avere una virgola e quindi l'immagineUri e così via.
Potresti farlo e funzionerebbe ma questo non sarebbe buono,
questo non è
sicuro, apre una porta per un modello di attacco chiamato SQL injection, in cui gli utenti potrebbero in qualche modo inserire un codice
malevolo ed eseguire altre query che potrebbero rompersi il database.
Ovviamente in questa app in cui si trova un database locale proprio sul dispositivo di questo utente,
potrebbe non essere molto male ma comunque vogliamo difenderci da questo e quindi qui, in realtà usi un paio di segnaposto,
aggiungi punti di domanda qui e hai bisogno per aggiungere tutti i punti interrogativi necessari per inserire i valori.
Quindi qui sto inserendo cinque valori, quindi qui ho cinque punti interrogativi separati da virgole.
Ora i valori concreti per i punti interrogativi sono forniti nel secondo argomento che si passa per
eseguire SQL, questo array di argomenti. In precedenza era vuoto, ora
compiliamo gli argomenti nell'ordine in cui ne abbiamo bisogno,
quindi prima titolo, quindi imageUri e così via e il pacchetto SQL sostituirà quindi questi punti interrogativi con i
nostri valori, ma non prima di convalidarli per garantire che tale l'attacco per iniezione non può avvenire.
Quindi otteniamo una convalida automatica aggiuntiva usando questo approccio e quindi possiamo inserire il titolo qui, quindi il secondo
pezzo di dati era imageUri, quindi abbiamo bisogno dell'indirizzo,
quindi abbiamo bisogno
della latitudine e quindi abbiamo bisogno della longitudine, quindi
questo è come ora passiamo i nostri dati a questa query. Ora in queste funzioni di successo, come ho già
detto, il primo argomento è sempre come la ripetizione della tua query, ma il secondo
argomento è quindi l'errore o qui il risultato di questa query
e qui voglio risolvere questo risultato in modo che nel posto in cui chiamiamo insert place, quindi
possiamo effettivamente ascoltare la risoluzione della promessa e ottenere il nostro risultato di questa query che dovrebbe essere
alcune informazioni sul record che è stato creato.
Quindi ora possiamo chiamare inserire posto e, naturalmente, il posto in cui voglio chiamarlo di nuovo è il mio file di azioni
di luoghi.
Lì spostiamo l'immagine, ora voglio
anche raggiungere il mio database e aggiungere una voce. Per fare questo prima di tutto,
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
il nostro filesystem e così via, qui ovviamente ovviamente anche, ancora
nel blocco try catch, si desidera provare a inserire dati nel database.
Anche questo può
fallire, quindi averlo in un blocco try non è la peggiore idea.
Quindi qui posso chiamare insert place e questo restituisce una promessa perché abbiamo la nostra promessa lì dentro, quindi
possiamo aspettare questo
e in seguito riprendo il mio risultato DB, quindi lo memorizzerò in una costante e ora
inserirò ovviamente il luogo ha bisogno di un titolo, un'immagineUri, un indirizzo, una latitudine e una longitudine.
Ora quindi inoltrerò il mio titolo che già
ho, inoltrerò il nuovo percorso che è la mia immagineUri e ora per l'indirizzo, userò un indirizzo fittizio perché non abbiamo ancora
un indirizzo reale. Per la latitudine,
userò un numero fittizio di 15. 6 e per longitudine, diciamo 12. 3.
Ora questo potrebbe essere nel mezzo dell'oceano, non lo so, ma almeno qui
abbiamo alcune coordinate che possiamo usare per ora fino a quando non saremo in grado di recuperare una posizione reale.
Ora questo risultato db ovviamente è interessante, quindi consolliamolo dalla console e assicuriamoci anche di spedire questa azione
e quindi toccare il nostro archivio Redux se siamo riusciti sia con il filesystem che con
l'azione del database, quindi all'interno del
prova a bloccare e ora diamo un'occhiata a questo. Ora dovremmo essere in grado di archiviare
i dati
nel database, quindi proviamo questo su Android dove possiamo prendere
un'immagine, questo è un test.
Prendiamo un'immagine qui e vediamo se tutto ciò funziona ormai ritagliando quell'immagine e salvando questo posto.
Funziona e qui
vediamo un po 'di output, vediamo che questo è il risultato della nostra azione sul database
e vediamo che una riga è stata interessata perché è stata inserita una riga e otteniamo anche l'ID
che è stato creato automaticamente.
È un ID numerico qui, ma ovviamente non c'è
problema, quindi ora possiamo anche usare questo ID nel nostro riduttore invece di creare manualmente questo ID istantanea
dello stato qui.
Quindi questo è un piccolo
miglioramento, quando inviamo la nostra azione qui nei dati del luogo, ora voglio anche fornire l'ID e quell'ID può essere
recuperato dalla costante del risultato del DB e lì, è nel campo Inserisci ID qui come
puoi vedere , quindi accediamo a inserire ID qui. Ora nel riduttore quindi, non abbiamo più bisogno di generarlo in questo modo, invece qui
possiamo semplicemente fare riferimento all'azione. placeData. id.
Ora tieni presente che c'è un numero, qui in realtà voglio avere una
stringa anche se potresti anche tenere un numero ma lo convertirò in una stringa qui e con quello, ora
stiamo usando anche quell'ID, stiamo memorizzando nel database. Naturalmente ora sarebbe bello caricare tutti i nostri dati ogni volta che la
nostra app si riavvia perché in questo momento quando si riavvia,
i dati vengono comunque persi, non sono realmente persi,
non è un database ma non li vediamo qui perché noi non caricarlo nel nostro negozio Redux, che ovviamente sono i dati
che utilizziamo nell'app in esecuzione.
Quindi dobbiamo assicurarci di caricare i dati nel negozio Redux all'avvio di questa app.