Dlatego teraz, aby zakończyć ten moduł, chcę mieć pewność, że zapisujemy również zamówienia na serwerze
i oczywiście je również stamtąd ściągamy.
Teraz mamy tutaj kreatora akcji rozkazów i ponownie możemy skorzystać z Redux Thunk i zwrócić
naszą funkcję tutaj, która pobiera tę funkcję wysyłki, która powinna być asynchroniczna ze słowem kluczowym
async, abyśmy mogli używać asynchronicznego oczekiwania
i w tej funkcji tutaj które zwracamy, ostatecznie oczywiście wyślę mój obiekt akcji, ale zanim to
zrobimy, możemy teraz wysłać żądanie przechowywania tego zamówienia na serwerze i możemy pożyczyć je od
twórcy akcji produktu. Nie ma tak naprawdę
dużej różnicy, czy tworzymy produkt, czy to zamówienie, więc możemy skopiować cały kod tworzenia
produktu tutaj aż do tutaj i przenieść go do zamówień. plik js.
Teraz oczywiście możesz dodać
tutaj obsługę błędów, nie mam go tutaj, jedną rzeczą, którą chcę przynajmniej dodać, jest to, że nie dostaję
odpowiedzi, czy odpowiedź nie jest w porządku, w
którym to przypadku chcę aby rzucić nowy błąd, coś poszło nie tak, ale tutaj nie powinno się skupiać,
ponieważ omawialiśmy obsługę błędów i
ładowanie błystek, nie tak naprawdę część,
na której chcę się tutaj skupić, zamiast tego upewnijmy się, że wysyłamy tę prośbę
do
właściwy adres i nie powinien to być węzeł produktów, ale powiedzmy, że jest to
węzeł zamówień, co wydaje się sensowne, ponieważ chcemy przechowywać nasze zamówienia. Być może chcemy również przechowywać nasze zamówienia specyficzne dla tego użytkownika, abyśmy mogli przechowywać je
w / zamówień / U1, który jest moim fałszywym identyfikatorem użytkownika, który tutaj zakładam. Później będzie inaczej, później będziemy mieli
tutaj prawdziwy identyfikator, identyfikator dynamiczny, na razie
po prostu zakodujmy to tutaj, abyśmy mieli jakiś podfolder, jeden podfolder na użytkownika później.
Powinien to być post post, ponieważ dodajemy, dodajemy nowe dane, dodajemy nowe zamówienie.
Ten nagłówek musi być ustawiony i
oczywiście przesyłane przez nas dane są inne. Tam chcę
wysłać moje elementy karty i moją całkowitą kwotę oraz jeszcze jedną ważną rzecz, datę zamówienia.
Chcę przesłać tutaj swoją datę przekonwertowaną na ciąg z toISOString na obiekcie date, abyśmy utworzyli to
lokalnie w aplikacji, a następnie zapisaliśmy znacznik czasu na serwerze.
Teraz w swojej aplikacji możesz również chcieć wykonać tę datę na serwerze, ale ponieważ ten kurs
nie powinien koncentrować się na programowaniu po stronie serwera, zrobimy to tutaj i wyślemy na serwer, nie
martwiąc się zbytnio o co jeszcze mógłby
zrobić dla nas serwer, zróbmy tutaj wszystkie rzeczy i po prostu wyślij ten ukończony znacznik czasu na serwer.
Teraz doda to zamówienie tutaj, a gdy skończymy, odzyskamy dane odpowiedzi, które
będą zawierać automatycznie wygenerowany identyfikator, jeśli pamiętasz, zrobiliśmy to również przy tworzeniu produktu.
Dlatego teraz, kiedy dodajemy zamówienie, oczywiście przekazujemy nasze produkty i kwotę, ale teraz chcę również przekazać
identyfikator, który otrzymuję z resData. nazwa, to ta sama
logika, której używaliśmy podczas tworzenia produktu, i jest jeszcze jedna rzecz, moja migawka z datą powinna
oczywiście być taka sama jak tutaj.
Więc właściwie to, co zrobię, utworzę tutaj migawkę, datę z nową datą, a następnie użyję tej stałej tutaj, aby utworzyć
moją wersję łańcucha i użyję tej samej stałej tutaj, aby przesłać ją z danymi zamówienia.
Więc tutaj data odnosi się do tej stałej
daty, dzięki czemu używam tego samego znacznika czasu, zarówno lokalnie w moich danych zarządzanych za pomocą Redux, czyli
danych, z którymi pracuję tutaj w tej działającej aplikacji i oczywiście mam ten sam znacznik czasu na serwerze czyli
dane, które załaduję w przyszłości lub inne urządzenia załadują. A teraz musimy tylko popracować
nad reduktorem zamówień, aby dodać zamówienie.
Identyfikator to teraz coś, co otrzymuję z
zewnątrz, więc tutaj mam OrderData. Id, ponieważ właśnie to
przesyłamy tutaj, to automatycznie generowane przez Firebase ID ID, a data jest również
otrzymywana z zewnątrz, tutaj możemy teraz użyć orderData. tak jak teraz i przy tym mamy całą logikę, aby, mam
nadzieję, dodać zamówienie.
Teraz wróćmy tutaj i dodajmy to do koszyka i kliknij teraz zamówienie, to wydaje się działać, jeśli wrócimy,
zobaczymy tutaj węzeł zamówień w Firebase z podfolderem U1 dla naszego użytkownika z wygenerowanym unikalnym
identyfikatorem i tam, dane zamówienia z datownikiem z ceną, z kartami, które były tą jedną białą
koszulą i że wszystko nie wygląda tak źle, powiedziałbym.