Alors maintenant, pour terminer dans ce module, je veux m'assurer que nous sauvegardons également les commandes sur un serveur et bien
sûr que nous les récupérons également à partir de là.
Maintenant, nous avons le créateur d'action de commandes ici et là, nous pouvons à nouveau profiter de Redux Thunk
et retourner notre fonction ici, qui obtient cette fonction de répartition, qui devrait être asynchrone avec le mot
clé async afin que nous puissions utiliser
async wait et dans cette fonction ici que nous renvoyons, finalement j'enverrai mon objet d'action mais avant cela, nous pouvons
maintenant envoyer une demande pour stocker cette commande sur un serveur et nous pouvons emprunter cette demande au
créateur de l'action produits. Il n'y a pas vraiment
de grande différence si nous créons un produit ou cette commande, nous pouvons donc copier l'intégralité de ce
code de création de produit ici jusqu'à ici et le déplacer vers les commandes. fichier js.
Maintenant, bien sûr, vous pouvez
également ajouter la gestion des erreurs ici, je ne l'ai pas ici, une chose que je veux au moins ajouter est que
je ne reçois pas de contrôle si la réponse n'est
pas correcte, auquel cas je veux pour lancer une nouvelle erreur, quelque chose s'est mal passé, mais cela ne devrait pas être le
sujet ici car nous avons couvert
la gestion des erreurs et le chargement des
filateurs, pas vraiment la partie sur laquelle je veux me concentrer ici, au lieu de cela, assurons-nous d'envoyer
cette demande
à la bonne adresse et cela ne devrait pas être le nœud des produits, mais disons le nœud
des commandes qui a du sens, je suppose parce que nous voulons stocker nos commandes. Peut-être que nous voulons également stocker nos commandes spécifiques à cet utilisateur afin que nous puissions stocker
cela dans / commandes / U1 qui est mon ID utilisateur factice, je suppose ici. Plus tard, ce sera différent, plus tard,
nous aurons un véritable ID ici, un ID dynamique,
pour l'instant, codons-le ici pour que nous ayons un sous-dossier, un sous-dossier par utilisateur plus tard.
Ce devrait être une demande de publication, car nous ajoutons, nous ajoutons de nouvelles données, nous ajoutons une nouvelle commande.
Cet en-tête doit être défini et bien
sûr, les données que nous envoyons sont différentes. Là, je veux
envoyer mes articles de carte et mon montant total et une autre chose importante, la date de la commande.
Je veux envoyer ma date ici convertie en une chaîne avec toISOString sur l'objet date pour que nous
le créons localement dans l'application, puis nous enregistrons l'horodatage sur le serveur.
Maintenant, dans votre application, vous pouvez également faire cette création de date sur le serveur, mais comme ce
cours ne doit pas se concentrer sur la programmation côté serveur, nous le ferons ici et l'enverrons au serveur
sans trop nous inquiéter ce qu'un autre serveur
pourrait faire pour nous, faisons à la place toutes les choses ici et envoyons simplement cet horodatage terminé au serveur.
Maintenant, cela ajoutera une commande ici et une fois que nous aurons terminé, nous récupérerons nos données de réponse
qui comprendront cet ID généré automatiquement si vous vous en souvenez, nous l'avons également fait lors de la création du produit.
Donc donc maintenant, lorsque nous ajoutons une commande, nous transmettons bien sûr nos articles et le montant, mais maintenant je veux également
transmettre l'ID que je reçois de resData. nom, c'est la même logique que
nous avons utilisée lorsque nous avons créé un produit et il y a une chose supplémentaire, mon instantané de date doit bien
sûr être le même que celui créé ici.
En fait, ce que je vais faire, c'est que je vais créer mon instantané ici, la date avec une nouvelle date, puis utiliser cette constante ici pour
créer ma version de chaîne et utiliser la même constante ici pour la transmettre avec mes données de commande.
Donc, ici, la date fait référence à cette constante de
date, de sorte que j'utilise un seul et même horodatage, à la fois localement dans mes données gérées avec Redux qui sont
les données avec lesquelles je travaille ici dans cette application en cours d'exécution et bien sûr, j'ai également le même horodatage sur le serveur qui
sont les données que je chargerai à l'avenir ou d'autres appareils chargeront. Et maintenant, nous devons juste travailler
sur le réducteur de commandes pour ajouter une commande.
L'ID est maintenant quelque chose que je reçois
de l'extérieur, alors j'ai ici orderData. C'est parce que c'est ce
que nous transmettons ici, c'est que l'ID généré automatiquement Firebase nous donne et la date est
également reçue de l'extérieur, ici nous pouvons maintenant utiliser orderData. date comme ça et avec ça, nous avons toute la logique pour,
espérons-le, ajouter une commande.
Maintenant, revenons ici et ajoutons cela au panier et cliquez sur commander maintenant, cela semble fonctionner, si nous revenons en arrière, nous voyons
maintenant un nœud de commandes ici sur Firebase avec un sous-dossier U1 pour notre utilisateur avec l'ID unique généré
et là-dedans, les données de commande avec l'horodatage avec le prix, avec les éléments de la carte qui était cette seule
chemise blanche et que tout ne semble pas trop mal je dirais.