Buscar dados do nosso banco de dados local não é tão diferente de buscá-los em um servidor Web, em vez
de acessar um servidor Web, apenas acessamos nosso banco de dados
local, mas é isso.
Então, vamos começar escrevendo uma função no arquivo auxiliar do db que nos permite buscar dados no banco de dados.
Para isso, lá vou exportar uma nova constante, buscar locais, que deve fazer o que o nome sugere, não requer argumentos e, é claro, quero acessar
meu banco de dados e obter todos os locais. Então, copio esse código aqui do insert
place com a promessa e assim por diante, mas
a consulta muda agora e também os argumentos. Não preciso de argumentos, porque não injetamos
argumentos aqui.
Em vez de executar a inserção em, precisamos executar uma consulta diferente e essa
será uma consulta muito simples. Quero selecionar todos os locais da minha tabela de locais, executando a execução de select
*, o que significa que quero obter todas as colunas, todos os campos neste banco de dados de lugares.
Agora, se você conhece um pouco de SQL, agora também pode adicionar uma cláusula where para dizer qual ID
é maior, por exemplo,
etc. e deixe o resto como está e agora só precisamos
ir para nossas ações e garantir que tenhamos uma ação para isso.
Então, antes de tudo, adicionarei um novo identificador aqui,
um novo identificador de ação, definir locais, assim como fizemos no módulo HTTP para definir os locais que buscamos
em um servidor e, com isso, posso criar um novo criador de ações aqui onde eu digo carregar lugares, talvez, onde esse é o nome, e nesse criador de
ação, retornarei essa função interna e utilizo o async wait lá, então essa função fica assim, onde no final é
claro que despachamos uma ação objeto em que o tipo deve ser definido como local e
onde definimos todos os locais que carregamos, mas
é claro que essa é a parte que está faltando. Nós obtemos os locais executando esta função de busca de locais que
acabei de definir no arquivo helpers, no arquivo db
lá, então vamos importá-los
de lá e depois aqui no criador da ação load places, podemos executar locais de busca como este, este
retorna uma promessa para que possamos
aguardar isso e novamente obtemos nosso resultado db aqui.
Agora também podemos agrupar isso em um bloco try catch para garantir que capturamos os erros que possam ocorrer; portanto,
se houver um erro, eu o lançarei, então precisamos lidar
com isso no componente, na verdade, eu sou não
fazendo isso aqui, mas você pode lidar com isso da mesma maneira que o manipulou no
módulo HTTP, por exemplo, e com
isso aqui eventualmente, também no bloco try, podemos despachar os locais que buscamos. Para isso, é importante que entendamos como o resultado do banco de
dados se parece; portanto, console o resultado do
banco de dados de log aqui para que possamos analisá-lo e agora quero executar locais de carregamento na tela da
lista de locais, porque é aí que preciso de tudo. os lugares, certo?
Então, aqui, importarei ações star como locais da pasta store e, lá, o arquivo de ações locais e precisamos despachar uma ação; portanto, importarei
o uso dispatch do React Redux e, em seguida, criaremos essa função de envio executando
use despachar e agora, quando esse componente carregar,
o que podemos descobrir com a ajuda do efeito de uso, desejo despachar essa
ação de carregamento de dados.
Então, aqui podemos executar use effect e, na função que passamos para use
effect, quero despachar as ações dos locais. loadPlaces,
certo, assim. Agora, isso significa que, para esse efeito, temos uma dependência, que é a ação de despacho
que nunca deve mudar, portanto, isso
deve ser executado apenas uma vez quando o componente for criado, que é exatamente o comportamento que eu
quero aqui.
Então agora a ação de locais de carregamento deve ser despachada quando o aplicativo é iniciado e, de
fato, já foi iniciado aqui no iOS e agora também no Android e, portanto, aqui no log, vejo alguma
saída e esse é o log do Android e esse é o resultado da carga
coloca a ação no final. Como você vê, esse é o
resultado de nossa ação no banco de dados, o ID de inserção é indefinido porque não inserimos algo, apenas obtemos algo.
Temos esse campo de linhas e esse é outro objeto que possui um campo _array que contém uma matriz de
objetos e, no final, esses são nossos dados de local, certo?
Esse objeto aqui, são nossos dados
de local, tem o endereço, o ID, imageUri e assim por diante.
Portanto, é o resultado em linhas e, em seguida, em matriz, é onde
nossos dados residem.
Então é isso que precisamos no arquivo de ações de locais aqui quando despachamos nossos locais que queremos
exibir, que queremos carregar
no Redux, que deve ser dbResult. linhas. _ matriz.
Agora, é claro, isso então aciona as ações dos locais definidos, então agora no redutor de locais, precisamos
nos preocupar
com isso, então aqui eu adiciono um caso, locais definidos, certifique-se
de importar o identificador de locais definidos aqui e nos locais definidos Nesse caso, posso retornar um novo instantâneo de estado
em que meus locais estão basicamente definidos para os locais que voltei do banco de
dados e faço isso configurando-o para ação. lugares porque no meu arquivo de ações, eu
tenho
essa chave de lugares na ação,
que são os dados carregados do local e só quero mapear essa matriz em uma nova matriz para transformar os dados, transformar cada
local em um novo local que segue meu modelo de local onde, por exemplo, converto o ID do local que carregamos em
uma sequência opcional, só quero mostrar como
você também pode transformar os dados, se necessário, fazer isso com
o método map que mapeia essa matriz em uma nova matriz.
Então,
lá faço isso, mas continuo com o título, continuo com o imageUri e não preciso de endereço e latitude, e assim por diante
agora, também é
por isso que estou mapeando isso para que possa desenhar alguns dados.
agora mapeio esse conjunto de locais que carrego em um novo conjunto de locais onde me importo apenas com o ID, o
título e o imageUri.
Agora, com isso, se salvarmos isso, poderemos realmente ver nossos lugares sendo carregados aqui no Android, aquele
que armazenamos antes e, de fato, aqui está. Então esse é o nosso lugar, esse
lugar é carregado. Com isso, agora podemos
nos concentrar também em obter a localização do usuário, é claro.