Con la base de datos inicializada, asegurémonos de que podamos almacenar datos allí.
Así que de vuelta en la base de datos. js en la carpeta de ayudantes, podemos agregar una nueva constante, insertar
lugar, por ejemplo, que
exporto y ahora aquí quiero obtener el título del lugar, quiero obtener la imagenUri, quiero obtener la dirección y también un
latitud y longitud, por lo que quiero obtener todos los datos que componen un lugar y allí, ahora
quiero insertar el lugar en la base de datos. Para eso, usaremos la misma sintaxis que aquí,
así que solo puedo copiar esto porque también quiero tener una promesa como envoltorio aquí para poder
usar cómodamente y atrapar o asincronizar en el lugar donde llamo lugar de inserción pero,
por supuesto, la consulta que ejecuto ahora es diferente.
En lugar de crear una tabla, ahora quiero insertar
datos en la tabla y eso se hace con el comando Insertar en.
Ahora debe especificar la tabla y esos lugares y luego entre paréntesis, los campos que desea orientar allí y,
por supuesto,
quiero orientar todos los campos excepto la ID porque, como mencioné, eso se generará automáticamente, lo cual es
muy conveniente. Por supuesto,
pero quiero apuntar a mi campo de título y ahora debe asegurarse de que coinciden con
los nombres que configuró allí para
sus columnas, debe coincidir con estos nombres aquí ahora.
El orden no tiene que ser el mismo, pero el nombre es importante, por
lo que quiero apuntar al título, la imagenUri,
ese también es un nombre que elegí allí, ¿verdad?
Entonces imageUri, dirección, latitud y
longitud, y ahora
necesitamos especificar qué valores deben ir allí.
Para ello, agregue la palabra clave de valores aquí después de esta lista de columnas que desea orientar y
ahora tiene otro par de paréntesis aquí donde especifica los valores que deben ir en cada una de
estas columnas.
Ahora, el orden de valores aquí, por supuesto, tiene que coincidir con el orden de los identificadores
de columna que tiene aquí, por lo que el primer valor que ingrese aquí irá al título, imageUri es el segundo valor y así sucesivamente.
Ahora, lo que podría hacer aquí es, por supuesto, usar marcas de retroceso en lugar
de comillas simples y luego, por ejemplo, inyectar el título aquí y luego tener una coma y luego la imagenUri, etc.
Podría hacer eso y funcionaría, pero esto no
sería bueno, esto
es inseguro, abre una puerta para un patrón de ataque llamado inyección SQL, donde los usuarios podrían insertar código malicioso allí y
ejecutar otras consultas que podrían romperse la base de datos.
Por supuesto, en esta aplicación donde es una base de datos local solo en el dispositivo de este usuario, eso
podría no ser súper malo, pero aún así queremos defendernos de esto y, por lo tanto, aquí, en realidad, usa un par de marcadores
de posición, agrega signos de interrogación aquí y necesita para agregar tantos signos de interrogación como sea necesario para ingresar valores.
Entonces, aquí estoy ingresando cinco valores, por lo tanto, aquí tengo cinco signos de interrogación separados por comas.
Ahora los valores concretos para los signos de interrogación se proporcionan en el segundo argumento que pasa
para ejecutar SQL, esta matriz de argumentos. Anteriormente estaba vacío, ahora completamos
los argumentos en el orden en que los necesitamos,
así que primero titula, luego imageUri y así sucesivamente, y el paquete SQL intercambiará estos signos de interrogación por
nuestros valores, pero no antes de validarlos para garantizar que El ataque de inyección no puede suceder.
Entonces obtenemos una validación automática adicional al usar este enfoque y luego podemos ingresar el título aquí, luego
el segundo dato fue la imagen Uri, luego necesitamos
la dirección,
luego necesitamos la latitud y luego necesitamos la
longitud, entonces esto es cómo pasamos nuestros datos a esta consulta. Ahora, en estas funciones de éxito, como mencioné, el
primer argumento siempre es como la repetición de su consulta, pero el segundo argumento
es el error o aquí el resultado de esta consulta y
aquí quiero resolver este resultado para que en el lugar donde llamamos lugar de inserción, en realidad
podemos escuchar la resolución de la promesa y obtener nuestro resultado de esta consulta, que debería ser alguna
información sobre el registro que se creó.
Así que ahora podemos llamar al lugar de inserción y, por supuesto, el lugar donde quiero volver a llamarlo es mi archivo de acciones
de lugares.
Allí movemos la imagen, ahora también
quiero llegar a mi base de datos y agregar una entrada. Para hacer eso aquí en primer lugar,
importemos este método de inserción de lugar desde la carpeta de ayudantes y allí, desde el archivo db y con el importado, en lugar agregado después de resolver
nuestro sistema de archivos y así sucesivamente, aquí, por supuesto, entonces también,
todavía en el bloque try catch, intente insertar datos en la base de datos.
Esto también puede
fallar, por lo que tenerlo en un bloque de prueba no es la peor idea.
Entonces, aquí puedo llamar al lugar de inserción y eso devuelve una promesa porque tenemos nuestra propia promesa allí, así
que podemos esperar esto
y obtener mi resultado de DB a partir de entonces, así que lo guardaré en un lugar
constante y ahora inserto, por supuesto necesita un título, una imagen Uri, una dirección, una latitud y longitud.
Ahora, por lo tanto, reenviaré mi título que
ya tengo, reenviaré la nueva ruta que es mi imageUri y ahora para la dirección, usaré una dirección ficticia porque todavía no tenemos
una dirección real. Para la latitud,
usaré un número ficticio de 15. 6 y para la longitud, digamos 12. 3)
Ahora, esto podría estar en el medio del océano, no lo sé,
pero al menos tenemos algunas coordenadas aquí que podemos usar por ahora hasta que podamos obtener una ubicación real.
Ahora, por supuesto, este resultado de db es interesante, así que vamos a registrarlo en la consola y, por cierto, asegurémonos de que solo
despachemos esta acción y, por lo tanto, toquemos nuestra tienda Redux si tenemos éxito tanto con el sistema de archivos como
con la acción de la base de datos, así
que dentro del intente bloquear y ahora, echemos un vistazo a esto. Ahora deberíamos poder almacenar datos en la
base de
datos, así que probémoslo en Android, donde podemos tomar una
imagen, esta es una prueba.
Tomemos una imagen aquí y veamos si todo eso funciona recortando esa imagen y guardando este lugar.
Esto funciona y
aquí vemos algunos resultados, vemos que es el resultado de nuestra acción de base de datos
y vemos que una fila se vio afectada porque se insertó una fila y también recuperamos la ID
que se creó automáticamente.
Aquí se trata de una identificación numérica, pero por supuesto no hay
problema, por lo que ahora también podemos usar esta identificación en nuestro reductor en lugar de crear manualmente esta identificación de instantánea
de estado aquí.
Así que es una pequeña mejora,
cuando despachamos nuestra acción aquí en los datos del lugar, ahora también quiero proporcionar la ID y esa ID se puede obtener de
la constante del resultado de la base de datos y allí, está en el campo Insertar ID aquí, como
puede ver. , así que accedamos a insertar ID aquí. Ahora en el reductor, por lo tanto, ya no necesitamos generarlo de esta manera, sino que
simplemente podemos referirnos a la acción. placeData. carné de identidad.
Ahora tenga en cuenta que es un número, aquí realmente quiero tener una cadena, aunque
también podría mantener un número, pero lo convertiré en una cadena aquí y con eso, ahora también estamos usando esa
ID, estamos almacenando en la base de datos Por supuesto, ahora sería bueno cargar todos nuestros datos cada vez que se
reinicia nuestra aplicación porque ahora, cuando se reinicia, los datos aún se
pierden, en realidad no se pierden, no es una base
de datos, pero no la vemos aquí porque no cargue esto en nuestra tienda Redux, que, por supuesto, son los datos que usamos
en la aplicación en ejecución.
Por lo tanto, debemos asegurarnos de que cargamos los datos en la tienda Redux cuando se inicia esta aplicación.