Il recupero dei dati dal nostro database locale non è così diverso dal recupero da un server Web, invece di raggiungere
un server Web, ci limitiamo a raggiungere il nostro database locale, ma
il gioco è fatto.
Quindi iniziamo scrivendo una funzione nel file helper db che ci consente di recuperare i dati dal database.
Per questo, lì dentro esporterò una nuova costante, recuperando i luoghi, che dovrebbe fare ciò che suggerisce il nome, non accetta argomenti e lì, naturalmente, voglio
raggiungere il mio database e ottenere tutti i posti. Quindi copierò questo codice da insert place
con la promessa e così via, ma la query
cambierà ora e anche gli argomenti, non ho bisogno di argomenti perché non inietteremo alcun
argomento qui.
Invece di eseguire insert in, dobbiamo eseguire una query diversa e questa sarà
una query molto semplice, voglio selezionare tutti i posti nella mia tabella dei posti che viene eseguita eseguendo select
* il che significa che voglio ottenere tutte le colonne, tutti i campi in questo database da luoghi.
Ora se conosci un po 'di SQL, ora puoi anche aggiungere una clausola where per dire dove ID maggiore uno per esempio e così via,
ma non lo farò qui, voglio
ottenere tutti i posti quindi eseguirò questa query e lasciare il resto così com'è
e ora dobbiamo solo andare alle nostre azioni e assicurarci di avere un'azione per questo.
Quindi, prima di tutto, aggiungerò qui un nuovo identificatore,
un nuovo identificatore di azione, impostiamo i luoghi, proprio come abbiamo fatto nel modulo HTTP per impostare i luoghi
che abbiamo recuperato da un server e, con ciò, posso creare un nuovo creatore di azioni qui dove dico carica luoghi forse, dove questo è il nome e in
questo creatore di azioni, restituirò questa funzione interiore e uso async wait in là, quindi questa funzione è simile
a questa, dove alla fine ovviamente inviamo un'azione oggetto in cui il tipo deve essere
impostato in luoghi e in cui impostare tutti
i luoghi caricati, ma ovviamente questa è la parte mancante. Otteniamo i luoghi eseguendo questa funzione di recupero dei luoghi che ho appena
definito nel file degli helper, nel file db lì, quindi
importiamolo da lì e
quindi qui nel creatore dell'azione dei luoghi di caricamento, possiamo eseguire i luoghi di recupero come questo, questo restituisce una
promessa in modo che possiamo aspettare
questo e di nuovo otteniamo il nostro risultato db qui.
Ora possiamo anche racchiuderlo in un blocco try catch per assicurarci di rilevare eventuali errori che potrebbero verificarsi,
quindi qui se abbiamo un errore, lo lancerò, quindi
dobbiamo gestirlo nel componente in realtà, sono non farlo
qui ma potresti gestirlo nello stesso modo in cui lo hai gestito nel modulo HTTP
per esempio e con quello
qui eventualmente, anche nel blocco try, possiamo spedire i luoghi che prendiamo. Per questo è importante per noi capire come appare il risultato
del database, quindi consento il log del risultato
del DB qui in modo che possiamo esaminarlo e ora voglio eseguire i posti di carico nella schermata dell'elenco
dei luoghi perché è lì che ho bisogno di tutto i posti, giusto?
Quindi, qui, importerò le stelle come azioni dei luoghi dalla cartella del negozio e lì, il file delle azioni dei luoghi e dovremo inviare
un'azione, quindi importerò l'uso della spedizione da React Redux e quindi qui creeremo quella funzione di
spedizione eseguendo l'uso spedizione e ora quando questo
componente viene caricato, che alla fine possiamo scoprire con l'aiuto dell'effetto use, voglio inviare questa
azione di caricamento dei dati.
Quindi qui possiamo eseguire use effect e nella funzione che passiamo per use
effect, voglio inviare le azioni dei luoghi. loadPlaces,
giusto, così. Ciò significa che per questo effetto, abbiamo una dipendenza, che è l'azione di invio che
non dovrebbe mai cambiare, quindi quindi
dovrebbe essere eseguita solo una volta quando viene creato il componente, che è esattamente il comportamento che
voglio qui.
Quindi ora l'azione di caricamento dei luoghi dovrebbe essere inviata all'avvio della nostra app e, in effetti,
è stata avviata qui su iOS già e ora anche su Android e quindi qui nel registro, vedo
un output e questo è il registro Android e questo è il risultato dal carico
posiziona l'azione alla fine. Come vedi, questo è il risultato
della nostra azione sul database, inserire ID non è definito perché non abbiamo inserito qualcosa, ma abbiamo semplicemente ottenuto qualcosa.
Abbiamo quel campo di righe e questo è un altro oggetto che ha un campo _array che contiene una matrice di
oggetti e, alla fine, questo è il nostro posto dati, giusto?
Questo oggetto qui, ecco i nostri
dati sui luoghi, ha l'indirizzo, l'ID, imageUri e così via.
Quindi è nel risultato in righe e poi in _array, ecco dove vivono
i nostri dati.
Questo è ciò di cui abbiamo bisogno nel file delle azioni dei luoghi qui quando inviamo i nostri luoghi che
vogliamo visualizzare, che vogliamo caricare
in Redux, che dovrebbe essere dbResult. filari. _Vettore.
Ora, naturalmente, ciò innesca le azioni dei luoghi impostati, quindi ora nel riduttore dei luoghi, dobbiamo preoccuparci
di questo,
quindi qui aggiungo un caso, imposta i luoghi, assicurati di
importare l'identificatore dei luoghi impostati qui e nei luoghi impostati In questo caso, posso restituire una nuova istantanea di
stato in cui i miei posti sono sostanzialmente impostati sui luoghi che sono tornato dal
database e lo faccio impostandolo su azione. posti perché nel mio file delle azioni, ho questa
chiave
dei luoghi nell'azione a destra che
è i dati dei luoghi caricati e lì voglio solo mappare questo array in un nuovo array per trasformare i dati, per trasformare ogni singolo
posto in un nuovo posto che segue il mio modello di luogo dove ad esempio converto l'ID del luogo che abbiamo caricato in
una stringa che è facoltativa, voglio solo
mostrarti come puoi anche trasformare i dati se necessario, puoi farlo con
il metodo map che mappa questo array in un nuovo array.
Quindi
lì lo faccio, mantengo comunque il titolo, mantengo l'immagineUri e non ho solo bisogno di indirizzo e latitudine e così via in
questo momento, ecco
anche perché lo sto mappando in modo da poter elaborare alcuni dati,
quindi ora mappa questo array di luoghi che carico in un nuovo array di luoghi in cui mi occupo solo di
ID, titolo e imageUri.
Ora, se lo salviamo, dovremmo effettivamente essere in grado di vedere i nostri luoghi caricati qui su Android, quel
posto che abbiamo memorizzato prima e in effetti, eccolo qui. Questo è il nostro posto, è
un posto carico. Con ciò, ora
possiamo concentrarci su come ottenere ovviamente la posizione dell'utente.