1 00:00:02,120 --> 00:00:08,120 La récupération de données à partir de notre base de données locale n'est pas si différente de la récupération à partir d'un serveur Web, au lieu de 2 00:00:08,150 --> 00:00:11,690 tendre la main à un serveur Web, nous tendons simplement la main à notre base de 3 00:00:11,690 --> 00:00:13,010 données locale, mais c'est tout. 4 00:00:13,040 --> 00:00:18,950 Commençons donc par écrire une fonction dans le fichier d'assistance db qui nous permet de récupérer les données de la base de données. 5 00:00:19,700 --> 00:00:26,750 Pour cela, là-bas, j'exporterai une nouvelle constante, récupérera les lieux, qui devrait faire ce que le nom suggère, ne prend aucun argument et là bien sûr, je veux accéder 6 00:00:26,750 --> 00:00:31,880 à ma base de données et obtenir tous les lieux. Je vais donc copier ce code ici à 7 00:00:31,880 --> 00:00:35,660 partir de l'insertion avec la promesse et ainsi de suite, mais 8 00:00:35,980 --> 00:00:41,840 la requête va changer maintenant et aussi les arguments, je n'ai besoin d'aucun argument car nous n'injecterons 9 00:00:41,840 --> 00:00:43,110 aucun argument ici. 10 00:00:43,340 --> 00:00:48,620 Au lieu de lancer l'insertion dans, nous devons exécuter une requête différente et ce sera 11 00:00:48,620 --> 00:00:55,520 une requête très simple, je veux sélectionner tous les endroits dans ma table des endroits, ce qui se fait en exécutant select 12 00:00:55,520 --> 00:01:02,170 * ce qui signifie que je veux obtenir toutes les colonnes, tous les champs dans cette base de données des endroits. 13 00:01:02,180 --> 00:01:09,740 Maintenant, si vous connaissez un peu de SQL, vous pouvez maintenant ajouter une clause where pour indiquer où ID supérieur, par exemple et ainsi de suite, mais je ne 14 00:01:09,740 --> 00:01:11,780 le ferai pas ici, je veux obtenir 15 00:01:11,780 --> 00:01:16,150 tous les endroits, donc je vais exécuter cette requête et laisser le reste tel qu'il est et 16 00:01:16,310 --> 00:01:20,870 maintenant nous devons simplement aller à nos actions et nous assurer que nous avons une action pour cela. 17 00:01:21,530 --> 00:01:25,670 Donc, tout d'abord, je vais ajouter un nouvel identifiant ici, 18 00:01:25,700 --> 00:01:33,740 un nouvel identifiant d'action, définir des lieux, tout comme nous l'avons fait dans le module HTTP pour définir les lieux que 19 00:01:33,970 --> 00:01:46,020 nous avons récupérés à partir d'un serveur et avec cela, je peux créer un nouveau créateur d'action ici où je dis peut-être charger des endroits, où c'est le nom et dans 20 00:01:46,860 --> 00:01:54,980 ce créateur d'action, je vais retourner cette fonction interne et j'utilise async attendre là-bas, donc cette fonction ressemble à ceci, où 21 00:01:54,990 --> 00:02:01,590 à la fin bien sûr, nous envoyons une action objet où le type doit être défini et 22 00:02:01,590 --> 00:02:05,300 où nous avons défini tous les emplacements que 23 00:02:06,020 --> 00:02:14,340 nous avons chargés, mais bien sûr, c'est la partie qui manque. Nous obtenons les emplacements en exécutant cette fonction d'extraction des emplacements que je viens 24 00:02:14,340 --> 00:02:17,700 de définir dans le fichier helpers, dans le fichier db, alors 25 00:02:17,700 --> 00:02:19,570 importons-le à partir de là, 26 00:02:20,370 --> 00:02:26,870 puis ici dans le créateur d'action de chargement des emplacements, nous pouvons exécuter des emplacements d'extraction comme celui-ci, ce renvoie une 27 00:02:26,940 --> 00:02:28,970 promesse afin que nous puissions attendre 28 00:02:28,970 --> 00:02:32,300 cela et encore une fois, nous obtenons notre résultat db ici. 29 00:02:32,390 --> 00:02:37,820 Maintenant, nous pouvons également envelopper cela dans un bloc try catch pour nous assurer que nous interceptons toutes les erreurs qui pourraient se produire, 30 00:02:37,820 --> 00:02:40,580 donc ici, si nous avons une erreur, je vais la jeter, nous 31 00:02:41,270 --> 00:02:43,900 devons donc la gérer dans le composant en fait, je suis 32 00:02:44,210 --> 00:02:48,620 ne le faisant pas ici, mais vous pouvez le gérer de la même manière que vous l'avez géré dans 33 00:02:48,620 --> 00:02:50,420 le module HTTP par exemple et avec 34 00:02:50,540 --> 00:02:58,000 cela ici finalement, également dans le bloc try, nous pouvons répartir les endroits que nous recherchons. Pour cela, il est important pour nous de comprendre à quoi ressemble le résultat 35 00:02:58,010 --> 00:03:00,980 de la base de données.Je vais donc consolider le résultat 36 00:03:00,980 --> 00:03:07,490 de la base de données de journal ici afin que nous puissions l'examiner et maintenant je veux exécuter des lieux de chargement dans mon 37 00:03:07,520 --> 00:03:11,800 écran de liste des lieux car c'est là que j'ai besoin de tout les lieux, non? 38 00:03:11,840 --> 00:03:23,020 Donc ici, j'importerai des actions étoiles comme lieux à partir du dossier de stockage et là, le fichier d'actions de lieux et nous devons envoyer une 39 00:03:23,410 --> 00:03:30,670 action, donc j'importerai use dispatch de React Redux puis ici nous créerons cette fonction de répartition en 40 00:03:30,700 --> 00:03:34,680 exécutant use répartir et maintenant lorsque ce composant se 41 00:03:34,900 --> 00:03:41,830 charge, que nous pouvons finalement découvrir à l'aide de l'effet d'utilisation, je veux répartir cette 42 00:03:41,830 --> 00:03:44,520 action de chargement de données. 43 00:03:44,520 --> 00:03:49,800 Donc, ici, nous pouvons exécuter use effect et dans la fonction que nous transmettons à use 44 00:03:49,840 --> 00:03:56,170 effect, je veux répartir les actions des lieux. loadPlaces, à 45 00:03:56,180 --> 00:04:05,090 droite, comme ça. Maintenant, cela signifie que pour cet effet, nous avons une dépendance, c'est l'action de répartition qui 46 00:04:05,090 --> 00:04:07,040 ne devrait jamais changer, donc cela ne 47 00:04:07,100 --> 00:04:11,960 devrait s'exécuter qu'une seule fois lorsque le composant est créé, ce qui est exactement le comportement que je 48 00:04:11,960 --> 00:04:12,610 veux ici. 49 00:04:13,910 --> 00:04:19,400 Alors maintenant, l'action de chargement des lieux devrait être envoyée au démarrage de notre application et en effet, 50 00:04:19,400 --> 00:04:25,160 elle a déjà démarré ici sur iOS et maintenant également sur Android et donc ici dans le journal, je 51 00:04:25,160 --> 00:04:29,820 vois une sortie et c'est le journal Android et c'est le résultat de la charge 52 00:04:29,820 --> 00:04:32,960 place l'action à la fin. Comme vous le voyez, c'est le résultat 53 00:04:32,960 --> 00:04:38,100 de notre action de base de données, l'ID d'insertion n'est pas défini car nous n'avons pas inséré quelque chose, nous avons juste obtenu quelque chose. 54 00:04:38,300 --> 00:04:43,820 Nous avons ce champ de lignes et c'est un autre objet qui a un champ _array qui contient un tableau d'objets 55 00:04:43,820 --> 00:04:46,990 et à la fin, ce sont nos données de lieu, non? 56 00:04:47,000 --> 00:04:49,300 Cet objet ici, ce sont nos 57 00:04:49,310 --> 00:04:52,940 données de lieu, il a l'adresse, l'ID, imageUri et ainsi de suite. 58 00:04:52,940 --> 00:04:57,830 C'est donc dans le résultat en lignes puis _array, c'est là que 59 00:04:57,830 --> 00:04:59,410 vivent nos données. 60 00:04:59,450 --> 00:05:06,110 C'est donc ce dont nous avons besoin dans le fichier d'actions de lieux ici lorsque nous distribuons nos lieux que nous 61 00:05:06,110 --> 00:05:08,150 voulons afficher, que nous voulons 62 00:05:08,150 --> 00:05:14,600 charger dans Redux, qui devrait être dbResult. Lignes. _array. 63 00:05:14,680 --> 00:05:21,790 Maintenant, bien sûr, cela déclenche ensuite les actions de définition des lieux, alors maintenant dans le réducteur de lieux, 64 00:05:21,790 --> 00:05:22,820 nous devons 65 00:05:22,840 --> 00:05:27,140 nous en préoccuper, alors ici j'ajoute un cas, des lieux définis, 66 00:05:27,250 --> 00:05:35,210 assurez-vous d'importer l'identifiant des lieux définis ici et dans les lieux définis Dans ce cas, je peux retourner un nouvel instantané d'état 67 00:05:35,210 --> 00:05:41,310 où mes emplacements sont fondamentalement définis aux emplacements que j'ai récupérés de la base de données et 68 00:05:41,750 --> 00:05:47,510 je le fais en le mettant en action. places parce que dans mon fichier d'actions, j'ai cette clé 69 00:05:47,510 --> 00:05:48,300 places dans 70 00:05:48,320 --> 00:05:50,410 le droit d'action qui est les 71 00:05:51,380 --> 00:05:59,520 données de lieu chargées et là je veux juste mapper ce tableau dans un nouveau tableau pour transformer les données, pour transformer chaque endroit en un nouvel 72 00:05:59,520 --> 00:06:07,170 endroit qui suit mon modèle de lieu où je convertis par exemple l'ID de l'endroit que nous avons chargé en une chaîne qui est facultative, 73 00:06:07,230 --> 00:06:09,680 je veux juste vous montrer comment vous pouvez 74 00:06:09,690 --> 00:06:13,670 également transformer ensuite les données si vous en avez besoin, vous pouvez le 75 00:06:13,710 --> 00:06:17,440 faire avec la méthode map qui mappe ce tableau dans un nouveau tableau. 76 00:06:17,670 --> 00:06:18,140 Donc 77 00:06:18,150 --> 00:06:24,660 là je fais ça, je garde le titre cependant, je garde l'imageUri et je n'ai juste pas besoin d'adresse et de latitude et ainsi de suite 78 00:06:24,660 --> 00:06:25,650 en ce moment, c'est 79 00:06:26,190 --> 00:06:29,520 aussi pourquoi je mappe ceci pour que je puisse établir des données, donc 80 00:06:29,520 --> 00:06:35,720 maintenant, je mappe ce tableau de lieux que je charge dans un nouveau tableau de lieux où je ne me soucie que de l'ID, 81 00:06:35,720 --> 00:06:36,900 du titre et de l'imageUri. 82 00:06:37,970 --> 00:06:43,670 Maintenant, avec cela, si nous enregistrons cela, nous devrions en fait être en mesure de voir nos lieux chargés ici sur Android, cet 83 00:06:43,880 --> 00:06:49,880 endroit que nous avons stocké avant et en effet, le voici. C'est donc notre place, cette place 84 00:06:49,890 --> 00:06:53,180 est chargée. Avec cela, nous pouvons 85 00:06:53,410 --> 00:06:57,850 maintenant nous concentrer sur l'obtention de l'emplacement de l'utilisateur bien sûr.