1 00:00:02,180 --> 00:00:05,750 Com o banco de dados inicializado, vamos garantir que possamos armazenar dados lá. 2 00:00:05,750 --> 00:00:13,460 Então, de volta ao banco de dados. js na pasta helpers, podemos adicionar uma nova constante, inserir local, 3 00:00:13,460 --> 00:00:14,850 por exemplo, que 4 00:00:15,110 --> 00:00:21,650 exporto e agora aqui quero obter o título do local, quero obter o imageUri, quero obter o endereço e 5 00:00:21,930 --> 00:00:27,770 também um latitude e longitude, por isso quero obter todos os dados que compõem um local e, 6 00:00:27,800 --> 00:00:33,950 agora, quero inserir o local no banco de dados. Para isso, usaremos a mesma sintaxe aqui, para 7 00:00:33,950 --> 00:00:39,890 que eu possa copiar isso porque também quero ter uma promessa como invólucro aqui, para que eu 8 00:00:39,890 --> 00:00:45,430 possa usá-lo convenientemente e capturar ou assíncrona aguardar no local onde chamo de inserir local mas 9 00:00:45,560 --> 00:00:49,010 é claro que a consulta que executo agora é diferente. 10 00:00:49,010 --> 00:00:52,380 Em vez de criar uma tabela, agora quero inserir 11 00:00:52,400 --> 00:00:56,620 dados na tabela e isso é feito com o comando insert into. 12 00:00:56,660 --> 00:01:02,450 Agora você precisa especificar a tabela e seus locais e, entre parênteses, os campos que você deseja segmentar lá 13 00:01:02,450 --> 00:01:03,380 e, é 14 00:01:03,410 --> 00:01:08,840 claro, eu quero segmentar todos os campos, exceto o ID, porque, como mencionei, será gerada automaticamente, o 15 00:01:08,840 --> 00:01:10,320 que é muito conveniente. 16 00:01:10,520 --> 00:01:15,510 claro, mas quero segmentar meu campo de título e agora você precisa se certificar de corresponder 17 00:01:15,510 --> 00:01:17,360 aos nomes que você configurou para 18 00:01:17,450 --> 00:01:20,150 suas colunas, é preciso corresponder esses nomes aqui agora. 19 00:01:20,180 --> 00:01:24,480 A ordem não precisa ser a mesma, mas a nomeação é importante, então 20 00:01:24,500 --> 00:01:27,400 eu quero segmentar o título, a imageUri, que 21 00:01:27,410 --> 00:01:30,360 também é um nome que eu escolhi lá, certo? 22 00:01:30,440 --> 00:01:32,660 Então imageUri, endereço, latitude e 23 00:01:32,660 --> 00:01:34,610 longitude e agora 24 00:01:34,610 --> 00:01:38,110 precisamos especificar quais valores devem ser inseridos lá. 25 00:01:38,120 --> 00:01:44,260 Você faz isso adicionando a palavra-chave values aqui após esta lista de colunas que deseja segmentar e 26 00:01:44,310 --> 00:01:50,330 agora tem outro par de parênteses aqui, onde especifica os valores que devem entrar em cada uma 27 00:01:50,330 --> 00:01:51,310 dessas colunas. 28 00:01:51,320 --> 00:01:56,120 Agora, é claro que a ordem dos valores aqui deve corresponder à ordem dos identificadores de 29 00:01:56,150 --> 00:02:02,820 coluna que você possui aqui; portanto, o primeiro valor digitado aqui entrará no título, imageUri é o segundo valor e assim por diante. 30 00:02:02,840 --> 00:02:08,570 Agora, o que você pode fazer aqui é que você pode usar, obviamente, ticks de volta em 31 00:02:08,570 --> 00:02:15,970 vez de aspas simples e, por exemplo, injetar título aqui e, em seguida, ter uma vírgula e, em seguida, imageUri e assim por diante. 32 00:02:15,970 --> 00:02:20,270 Você poderia fazer isso e funcionaria, mas isso 33 00:02:20,290 --> 00:02:21,940 não seria bom, 34 00:02:21,940 --> 00:02:32,350 isso é inseguro, abre uma porta para um padrão de ataque chamado injeção SQL, onde os usuários poderiam inserir código malicioso e 35 00:02:32,350 --> 00:02:37,240 executar outras consultas que poderiam quebrar o banco de dados. 36 00:02:37,240 --> 00:02:42,210 É claro que neste aplicativo, onde é um banco de dados local, apenas no dispositivo deste usuário, 37 00:02:42,210 --> 00:02:47,830 que pode não ser muito ruim, mas ainda queremos nos defender contra isso e, portanto, aqui, você realmente usa alguns espaços 38 00:02:47,850 --> 00:02:52,960 reservados, adiciona pontos de interrogação aqui e precisa para adicionar quantos pontos de interrogação forem necessários para inserir valores. 39 00:02:53,050 --> 00:02:58,450 Então, aqui estou inserindo cinco valores, portanto, aqui tenho cinco pontos de interrogação separados por vírgulas. 40 00:02:58,540 --> 00:03:03,700 Agora, os valores concretos para os pontos de interrogação são fornecidos no segundo argumento que você passa para 41 00:03:03,700 --> 00:03:07,990 executar o SQL, essa matriz de argumentos. Antes ele estava vazio, agora 42 00:03:08,020 --> 00:03:11,860 preenchemos os argumentos na ordem em que precisamos deles, 43 00:03:11,860 --> 00:03:19,570 portanto, primeiro o título, depois imageUri e assim por diante, e o pacote SQL trocará esses pontos de interrogação 44 00:03:19,810 --> 00:03:27,030 por nossos valores, mas não antes de validá-los para garantir que tal ataque de injeção não pode acontecer. 45 00:03:27,070 --> 00:03:33,050 Então, obtemos uma validação automática extra usando essa abordagem e, em seguida, podemos inserir o título 46 00:03:33,160 --> 00:03:36,040 aqui; o segundo dado é o imageUri; precisamos 47 00:03:36,280 --> 00:03:37,450 do endereço; 48 00:03:37,450 --> 00:03:40,210 depois, a latitude e a longitude; é 49 00:03:40,240 --> 00:03:47,310 assim que agora passamos nossos dados para essa consulta. Agora, nessas funções de sucesso, como mencionei, o primeiro 50 00:03:47,320 --> 00:03:52,510 argumento sempre é como a repetição da sua consulta, mas o segundo argumento é 51 00:03:52,510 --> 00:03:56,540 o erro ou aqui o resultado dessa consulta e aqui 52 00:03:56,650 --> 00:04:02,910 eu quero resolver esse resultado para que, no local em que chamamos de insert place, na 53 00:04:02,910 --> 00:04:09,490 verdade podemos ouvir a resolução da promessa e obter o resultado dessa consulta, que deve conter algumas 54 00:04:09,490 --> 00:04:12,640 informações sobre o registro que foi criado. 55 00:04:12,650 --> 00:04:18,730 Portanto, agora podemos chamar insert place e, é claro, o local em que desejo chamá-lo novamente é o arquivo de ações 56 00:04:18,730 --> 00:04:19,370 do place. 57 00:04:19,610 --> 00:04:21,810 Lá movemos a imagem, agora eu também 58 00:04:21,830 --> 00:04:28,700 quero chegar ao meu banco de dados e adicionar uma entrada. Para fazer isso aqui antes de tudo, 59 00:04:28,910 --> 00:04:40,980 vamos importar esse método insert place da pasta helpers e lá, do arquivo db e com o importado, no local após a solução de nosso 60 00:04:41,100 --> 00:04:46,450 sistema de arquivos e assim por diante, aqui é claro que 61 00:04:46,470 --> 00:04:52,290 também no bloco try catch, tente inserir dados no banco de dados. 62 00:04:52,380 --> 00:04:53,520 Isso também pode 63 00:04:53,520 --> 00:04:57,600 falhar, portanto, tê-lo em um bloco try não é a pior idéia. 64 00:04:57,630 --> 00:05:03,930 Então, aqui eu posso chamar insert place e isso retorna uma promessa, porque temos nossa própria promessa lá, para que 65 00:05:03,930 --> 00:05:05,370 possamos aguardar isso e 66 00:05:05,730 --> 00:05:11,460 eu receba meu resultado do banco de dados posteriormente, então eu vou armazenar isso em um local 67 00:05:11,460 --> 00:05:17,200 constante e agora inserir naturalmente precisa de um título, uma imageUri, um endereço, uma latitude e longitude. 68 00:05:17,270 --> 00:05:19,960 Agora, portanto, encaminharei meu título que já 69 00:05:19,960 --> 00:05:27,240 tenho, encaminharei o novo caminho que é minha imageUri e agora para endereço, usarei um endereço fictício porque ainda não temos 70 00:05:27,240 --> 00:05:29,700 um endereço real. Para latitude, usarei 71 00:05:29,700 --> 00:05:35,760 um número fictício de 15. 6 e para longitude, digamos 12. 3) 72 00:05:35,760 --> 00:05:39,750 Agora, isso pode estar no meio do oceano, não sei, 73 00:05:39,780 --> 00:05:45,730 mas pelo menos temos algumas coordenadas aqui que podemos usar por enquanto até conseguirmos um local real. 74 00:05:45,750 --> 00:05:51,960 Agora, é claro que este resultado do banco de dados é interessante; portanto, vamos registrá-lo no console e, também, a propósito, certifique-se de 75 00:05:51,960 --> 00:05:57,730 que apenas despacharemos essa ação e, portanto, tocaremos em nosso repositório Redux se tivermos sucesso com a ação do sistema 76 00:05:57,730 --> 00:06:00,330 de arquivos e do banco de dados, portanto, 77 00:06:00,330 --> 00:06:06,690 dentro do diretório tente bloquear e agora, vamos dar uma olhada nisso. Agora devemos poder armazenar dados no banco 78 00:06:06,690 --> 00:06:07,740 de dados, 79 00:06:07,770 --> 00:06:11,790 então vamos testar isso no Android, onde podemos tirar uma 80 00:06:11,790 --> 00:06:14,240 imagem, isso é um teste. 81 00:06:14,270 --> 00:06:24,980 Vamos fazer uma imagem aqui e ver se tudo isso funciona agora cortando essa imagem e salvando este lugar. 82 00:06:25,090 --> 00:06:26,280 Isso funciona e 83 00:06:26,380 --> 00:06:31,380 aqui vemos algumas saídas, vemos o resultado de nossa ação no banco de dados e vemos 84 00:06:31,480 --> 00:06:37,000 que uma linha foi afetada porque uma linha foi inserida e também recebemos de volta o ID 85 00:06:37,000 --> 00:06:38,460 que foi criado automaticamente. 86 00:06:38,500 --> 00:06:41,710 É um ID numérico aqui, mas obviamente não há problema, 87 00:06:41,710 --> 00:06:47,920 então agora também podemos usar esse ID em nosso redutor, em vez de criar manualmente esse ID de instantâneo 88 00:06:47,920 --> 00:06:49,060 de estado aqui. 89 00:06:49,060 --> 00:06:51,520 Portanto, é uma pequena melhoria: quando 90 00:06:51,520 --> 00:06:59,600 despachamos nossa ação aqui nos dados do local, agora também quero fornecer o ID e esse ID pode ser buscado a partir 91 00:06:59,600 --> 00:07:06,170 da constante do resultado do banco de dados e lá, está no campo Inserir ID aqui, como você 92 00:07:06,170 --> 00:07:13,000 pode ver , então vamos acessar inserir ID aqui. Agora no redutor, portanto, não precisamos mais gerá-lo dessa maneira; aqui, podemos 93 00:07:13,000 --> 00:07:17,330 simplesmente nos referir à ação. placeData. Eu iria. 94 00:07:17,330 --> 00:07:22,100 Agora, lembre-se de que existe um número. Aqui, na verdade, eu quero ter uma sequência, 95 00:07:22,100 --> 00:07:28,760 embora você também possa manter um número, mas eu a converterei em uma sequência aqui e, com isso, agora também estamos 96 00:07:28,760 --> 00:07:34,850 usando esse ID, estamos armazenando no banco de dados. É claro que agora seria bom carregar todos os nossos dados sempre que 97 00:07:34,850 --> 00:07:37,580 o aplicativo reiniciar, porque no momento em que reinicia, os dados ainda 98 00:07:37,700 --> 00:07:39,950 estão perdidos, não estão realmente perdidos, não são um 99 00:07:39,950 --> 00:07:45,230 banco de dados, mas não os vemos aqui porque não carregue isso em nossa loja Redux, que obviamente são os dados que 100 00:07:45,230 --> 00:07:46,640 usamos no aplicativo em execução. 101 00:07:46,940 --> 00:07:50,840 Portanto, precisamos garantir que carregamos os dados na loja Redux quando esse aplicativo for iniciado.