Dodajemy tokeny wszędzie, co jest ważne, ale w przypadku zamówień nie chcemy tylko dołączać tokena,
chcemy również upewnić się, że zamówienia naprawdę należą do zalogowanego użytkownika.
Teraz dobrze, że przechowujemy identyfikator użytkownika, który Firebase wygenerował w naszym sklepie Redux.
Dlatego mapowanie naszych zamówień do użytkowników nie jest zbyt trudne, uzyskujemy dostęp do naszego pełnego sklepu tutaj,
dzięki czemu możemy uzyskać identyfikator użytkownika, dzwoniąc do getState. auth. userId, to wszystko, to
daje nam identyfikator użytkownika aktualnie zalogowanego użytkownika,
a teraz możemy to wstawić tutaj i zastąpić U1 na stałe identyfikatorem użytkownika.
Oczywiście nie tylko do dodawania zamówień, ale także do pobierania zamówień, ponieważ chcemy pobrać
zamówienia aktualnie zalogowanego użytkownika.
Więc tutaj, otrzymamy również ten drugi argument, pobierz nasz identyfikator użytkownika i tutaj wymień pojedyncze
cudzysłowy na tylne tiki, abyśmy mogli użyć tego dynamicznego wygodnego zastrzyku tutaj, a następnie zastąpić lub interpolować, jak to
się nazywa ten ciąg tutaj, dodając userId. Dzięki temu teraz masz również pewność, że zamówienia są przechowywane poprawnie,
ale oczywiście
nie chodzi tylko o zamówienia, produkty też powinny być przechowywane. Powinniśmy się upewnić, że kiedy tworzymy produkt,
faktycznie dodajemy do niego ID właściciela, to jest coś, czego obecnie
nie robimy i to jest coś, co powinniśmy zrobić.
Tak więc tutaj, tak naprawdę, chcę również uzyskać użytkownika w tym miejscu, aby utworzyć produkt, a
kiedy następnie wysyłam prośbę o utworzenie nowego produktu, nie chcę tylko ustawić tytułu, opisu itd., Chcę również
ustawić właściciela Pole identyfikatora i dokładna nazwa zależą od użytkownika, który jest równy identyfikatorowi użytkownika zalogowanego użytkownika i jest to teraz
coś zupełnie nowego,
teraz naprawdę zaczynamy mapować produkty
na użytkownika, coś, co wcześniej robiliśmy tylko w sposób sztuczny. Oznacza to również, że kiedy wysyłamy tutaj tworzenie
produktu, chcę przekazać nową informację, chcę również dodać tam identyfikator właściciela, a także wskazać
tutaj identyfikator użytkownika, co oznacza, że w reduktorze produktów, musimy to
uszanować i tam, zamiast na stałe wpisywać ten identyfikator tutaj,
możemy teraz uzyskać to z naszej akcji. productData, z identyfikatora właściciela, ponieważ
właśnie to tam dodałem.
Więc tutaj produkty, dodałem identyfikator właściciela, dodałem ten klucz do danych produktu, do akcji, którą
wysyłam, teraz w reduktorze, musimy go użyć, wyodrębnić tutaj i użyć jako identyfikatora właściciela produktu,
który tworzymy lokalnie w Redux.
Oczywiście oznacza to również, że tutaj, gdy otrzymam produkty należące do tego użytkownika, chcę również upewnić się,
że odpowiednio filtruję pod kątem prawidłowego identyfikatora.
Kiedy więc nazywamy tutaj ustawione produkty, chcę się upewnić, że produkty użytkownika
są naprawdę filtrowane do zalogowanego użytkownika, więc w kreatorze działań dotyczących produktów, gdy pobieramy wszystkie produkty, tutaj oczywiście chcę pobrać
wszystkie produkty, ale tam też chcę mieć możliwość uzyskania mojego stanu, dzięki czemu mogę uzyskać mój identyfikator użytkownika ze stanu,
ponieważ wtedy, gdy tworzymy ładowane produkty, nie chcę ich tylko przesyłać dalej, chcę
również dodać nowego użytkownika klucz produktów do mojego obiektu akcji, w którym biorę załadowane produkty
i tutaj filtruję je i patrzę na każdy produkt, a jeśli identyfikator właściciela produktu, jeśli jest on równy identyfikatorowi użytkownika, to chcę
go zachować, ponieważ wtedy jest to produkt stworzony przez aktualnie zalogowanego użytkownika, w przeciwnym
razie
nie zatrzymam go.
Nadal jest częścią załadowanego produktu, który przekazuję do produktu, ale nie jest częścią produktów, które przekazałem
do produktów użytkownika, co
pozwala mi wrócić do reduktora i tam w zestawach produktów produkty użytkownika są inicjowane nie przez
filtrowanie tutaj, ale przez ustawienie jest równy produktom użytkownika akcji, które teraz filtrują produkty filtrowane w kreatorze akcji z logiką,
którą właśnie napisaliśmy w miejscu, w którym bierzemy identyfikator użytkownika. Dzięki temu widzimy tylko produkty,
które naprawdę stworzyliśmy i nie widzimy produktu innych użytkowników.
Nawiasem mówiąc, teraz możemy również upewnić się, że w naszym sklepie z produktami tutaj nie
zaczynamy od naszych produktów zastępczych, ale
faktycznie zaczynamy od pustej tablicy w obu przypadkach tutaj. Oznacza to również oczywiście, że teraz, jeśli zapiszemy to i zalogujemy
się, powinniśmy móc zobaczyć nasz poprzedni produkt, oto jest,
ale
jeśli przejdę do administratora, nie zobaczymy
go tam i to ma sens, ponieważ ten produkt został stworzony wcześniej
w trakcie kursu i dlatego nie ma identyfikatora właściciela. Ten produkt nie ma identyfikatora właściciela, dlatego nie jest zawarty w żadnym produkcie użytkownika, co jest
świetne, ponieważ teraz mam ładny przykład, że nie ma jeszcze żadnych produktów,
być może powinniśmy również wyświetlić tutaj wiadomość.
Na marginesie w zamówieniach również niczego nie widzimy
i być może powinniśmy również wyświetlić tutaj komunikat, ponieważ zamówienia dla U1 nie są już prawidłowym identyfikatorem użytkownika,
więc
zamówienia te nigdy nie są ładowane dla żadnego użytkownika i to dobrze, ponieważ tak powinno być.
Teraz po tym trochę poprawię te strony, aby wyświetlić komunikat, jeśli nie możemy załadować żadnych danych.
Więc tutaj na ekranie produktu użytkownika, jeśli długość produktów użytkownika jest równa zero, to nie chcę zwracać mojej płaskiej listy, ale zamiast
tego wrócę widok, w którym mam tekst, w którym mówię, że nie znaleziono produktów, może zacznij tworzyć niektóre i będziemy musieli skonfigurować
tam style, musimy również zaimportować widok i tekst, w przeciwnym razie nie możemy tego wyświetlić,
a teraz po prostu zrobię tutaj
szybką i brudną stylizację
za pomocą Flex One, uzasadnij centrum treści i wyrównaj centrum przedmiotów, oczywiście możesz również przypisać tutaj własną czcionkę do
tekstu i tak dalej, po prostu zrobię to w ten sposób, a następnie
skopiuję i przeniosę na ekran zamówień, upewnij się, że masz widok i
tam też tekst, a następnie tutaj możemy
dodać tę kontrolę, jeśli długość produktów użytkownika jest pusta, oczywiście tutaj powinniśmy sprawdzić długość zamówień, a
nie długość produktów użytkownika, ale jeśli to jest puste, mówię, że nie znaleziono zamówień,
może zacząć zamawiać niektóre produkty tego typu, a przy tym powinniśmy zobaczyć
ten tekst, jeśli nic nie zostanie znalezione.
Więc jeśli teraz spróbuję ponownie i zaloguję się naprawdę szybko i przejdziemy do strony administratora, zobaczymy tutaj tekst, a jeśli przejdziemy
do strony zamówień,
zobaczymy także tekst tutaj.
Więc teraz działa tak, jak powinno.
Jeśli teraz tworzę nowy produkt, na przykład szalik, powiedzmy z ładnym małym adresem URL,
który wybrałem za 55 USD. 99, wełniany szalik, jeśli to zrobię i prześlę
to, działa to dobrze i pokazuje się tutaj również pod adminem, pojawia się również pod produktami, możemy oczywiście również go
odfiltrować, jeśli chcesz, ale dlaczego nie, dlaczego nie mamy go
również tutaj i
jeśli dodam to do koszyka i kliknę teraz zamówienie, teraz tutaj w ramach zamówień, widzimy to i w Firebase,
widzimy również, że w ramach zamówień mamy teraz węzeł z naszym użytkownikiem Zamówienia.
Teraz działa to tak, jak powinno, w
tej aplikacji, a zatem tutaj mamy konfigurację, z którą możemy pracować.