Obtener datos de nuestra base de datos local no es tan diferente de obtenerlos de un servidor web, en lugar de
llegar a un servidor web, simplemente llegamos a nuestra base de datos local,
pero eso es todo.
Entonces, comencemos escribiendo una función en el archivo db helper que nos permita obtener datos de la base de datos.
Para esto, allí exportaré una nueva constante, buscar lugares, que debería hacer lo que el nombre sugiere, no requiere argumentos y, por supuesto, quiero llegar a
mi base de datos y obtener todos los lugares. Así que copiaré ese código aquí desde
el lugar de inserción con la promesa, etc., pero
la consulta cambiará ahora y también los argumentos, no necesito argumentos porque no inyectaremos ningún
argumento aquí.
En lugar de ejecutar insert into, necesitamos ejecutar una consulta diferente y esa será
una consulta muy simple, quiero seleccionar todos los lugares en mi tabla de lugares que se realiza ejecutando select *,
lo que significa que quiero obtener todas las columnas, todos los campos en esta base de datos de lugares.
Ahora, si conoce un poco de SQL, ahora también podría agregar una cláusula where para decir dónde ID mayor, por ejemplo, etc., pero no lo
haré aquí, quiero obtener todos los
lugares, así que ejecutaré esta consulta y dejamos el resto como está y ahora
solo tenemos que ir a nuestras acciones y asegurarnos de tener una acción para esto.
Entonces, antes que nada, agregaré un nuevo identificador aquí,
un nuevo identificador de acción, estableceré lugares, tal como lo hicimos en el módulo HTTP para configurar los lugares
que obtuvimos de un servidor y con eso, puedo crear un nuevo creador de acción aquí donde digo cargar lugares tal vez, donde este es el nombre y
en este creador de acción, devolveré esta función interna y uso async aguardar allí, por lo que esta función
se ve así, donde al final enviamos una acción objeto donde el tipo debe establecerse
lugares y donde establecemos todos los lugares que
cargamos, pero por supuesto esa es la parte que falta. Obtenemos los lugares ejecutando esta función de búsqueda de lugares que acabo de
definir en el archivo de ayuda, en el archivo db
allí, así que importémoslo desde
allí y luego aquí en el creador de acciones de carga de lugares, podemos ejecutar lugares de búsqueda como este,
esto devuelve una promesa para que
podamos esperar esto y nuevamente obtenemos nuestro resultado db aquí.
Ahora también podemos envolver esto en un bloque try catch para asegurarnos de detectar cualquier error que pueda ocurrir, así
que aquí, si tenemos un error, simplemente lo arrojaré, por
lo que debemos manejarlo en el componente en realidad,
estoy no haciendo eso aquí, pero podría manejarlo de la misma manera que lo hizo en el
módulo HTTP, por ejemplo, y con
eso aquí eventualmente, también en el bloque try, podemos enviar los lugares que buscamos. Para eso es importante que comprendamos cómo se ve el resultado de la
base de datos, así que voy a consolar el
resultado de la base de datos de registro aquí para que podamos verlo y ahora quiero ejecutar lugares de carga en la
pantalla de mi lista de lugares porque ahí es donde necesito todo los lugares, ¿verdad?
Así que aquí importaré acciones star como lugares desde la carpeta de la tienda y allí, el archivo de acciones lugares y necesitamos enviar una acción,
así que importaremos el envío de uso de React Redux y luego aquí crearemos esa función de
envío ejecutando use Despacho y ahora, cuando se carga
este componente, que finalmente podemos descubrir con la ayuda del efecto de uso, quiero despachar esta
acción de carga de datos.
Entonces, aquí podemos ejecutar use effect y en la función que pasamos para
usar effect, quiero enviar acciones de lugares. loadPlaces,
correcto, así. Ahora eso significa que para este efecto, tenemos una dependencia, esa es la acción de despacho
que nunca debería cambiar, por lo
tanto, esto solo debería ejecutarse una vez cuando se crea el componente, que es exactamente el comportamiento que
quiero aquí.
Entonces, la acción de cargar lugares debe enviarse cuando se inicia nuestra aplicación y, de hecho, ya se
inició aquí en iOS y ahora también en Android y, por lo tanto, aquí en el registro, veo algunos resultados
y ese es el registro de Android y ese es el resultado desde la carga
coloca la acción al final. Como puede ver, ese es el resultado
de nuestra acción de base de datos, la identificación de inserción no está definida porque no insertamos algo, en su lugar, simplemente obtuvimos algo.
Tenemos ese campo de filas y ese es otro objeto que tiene un campo _array que contiene una matriz de objetos
y al final, esos son los datos de nuestro lugar, ¿verdad?
Este objeto aquí, es nuestro lugar
de datos, tiene la dirección, la ID, imageUri y así sucesivamente.
Entonces está en el resultado en filas y luego en _array, ahí es
donde viven nuestros datos.
Entonces, eso es lo que necesitamos en el archivo de acciones de lugares aquí cuando enviamos nuestros lugares que
queremos mostrar, que queremos cargar
en Redux, eso debería ser dbResult. filas _formación.
Ahora, por supuesto, eso desencadena las acciones de lugares establecidos, por lo que ahora en el reductor de lugares,
debemos preocuparnos
por esto, así que aquí agrego un caso, establece lugares, asegúrate
de importar el identificador de lugares establecidos aquí y en los lugares establecidos En este caso, puedo devolver una nueva instantánea
de estado donde mis lugares están configurados básicamente en los lugares que obtuve de la base
de datos y lo hago configurándolo en acción. lugares porque en mi archivo de acciones, tengo esta
clave de
lugares en la acción correcta, que
son los datos de lugar cargados y allí solo quiero asignar esta matriz a una nueva matriz para transformar los datos, para transformar cada lugar
en un nuevo lugar que sigue mi modelo de lugar donde, por ejemplo, convierto la ID del lugar que cargamos en una cadena
que es opcional, solo quiero mostrarle cómo
también podría transformar los datos si fuera necesario, puede hacerlo con el
método de mapa que asigna esta matriz a una nueva matriz.
Entonces,
allí hago eso, mantengo el título, mantengo la imagen Uri y simplemente no necesito dirección y latitud, y así en este momento,
también es por
eso que estoy mapeando esto para poder obtener algunos datos, así que
ahora mapeo este conjunto de lugares que cargo en un nuevo conjunto de lugares donde solo me importa la ID, el
título y la imagenUri.
Ahora con eso, si guardamos esto, deberíamos poder ver nuestros lugares cargados aquí en Android, ese lugar
que almacenamos antes y, de hecho, aquí está. Así que ese es nuestro lugar, ese es
el lugar cargado. Con eso, ahora
podemos centrarnos en obtener también la ubicación del usuario, por supuesto.