Wir fügen überall Token hinzu, was wichtig ist, aber für Bestellungen möchten wir nicht nur das
Token anhängen, sondern auch sicherstellen, dass Bestellungen wirklich dem angemeldeten Benutzer gehören.
Das Gute ist nun, dass wir die von Firebase generierte Benutzer-ID in unserem Redux-Store speichern.
Die Zuordnung unserer Bestellungen zu Benutzern ist also nicht allzu schwierig. Wir erhalten hier Zugriff auf unseren vollständigen Shop,
sodass wir die Benutzer-ID durch Aufrufen von getState abrufen können. auth. userId, das ist alles,
dies gibt uns die userId des aktuell angemeldeten Benutzers
und jetzt können wir diese hier einfügen und die fest codierte U1 durch userId ersetzen.
Natürlich nicht nur zum Hinzufügen von Bestellungen, sondern auch zum Abrufen von Bestellungen, da wir die Bestellungen des
aktuell angemeldeten Benutzers abrufen möchten.
Lassen Sie uns hier auch das zweite Argument erhalten, unsere Benutzer-ID abrufen und hier einfache Anführungszeichen
gegen Back-Ticks austauschen, damit wir diese dynamische, bequeme Injektion hier verwenden und sie dann durch Hinzufügen der Benutzer-ID ersetzen oder
interpolieren können, wie sie hier als Zeichenfolge bezeichnet wird. So wird nun auch sichergestellt, dass die Bestellungen korrekt gespeichert werden, aber natürlich
sind es nicht
nur die Bestellungen, die Produkte sollten auch so gelagert werden. Wir sollten sicherstellen, dass wir beim
Erstellen eines Produkts tatsächlich unsere Eigentümer-ID hinzufügen. Dies ist etwas, was
wir derzeit nicht tun und was wir tun sollten.
Hier möchte ich also auch die Benutzer-ID hier in Produkt erstellen erhalten. Wenn ich dann meine
Anfrage zum Erstellen eines neuen Produkts sende, möchte ich nicht nur Titel, Beschreibung usw. festlegen, sondern auch
einen Eigentümer festlegen Das ID-Feld und der genaue Name liegen bei Ihnen. Dies entspricht der Benutzer-ID des angemeldeten Benutzers. Das ist jetzt
brandneu. Jetzt beginnen
wir wirklich damit, Produkte einem
Benutzer zuzuordnen, was wir bisher nur auf Dummy-Weise getan haben. Dies bedeutet übrigens auch, dass ich beim Versand eines
Produkts hier eine neue Information weitergeben möchte, dort auch die Eigentümer-ID hinzufügen und hier auch
auf die Benutzer-ID verweisen möchte. Dies bedeutet, dass im Produktreduzierer Wir müssen
dies respektieren und dort, anstatt diese ID hier fest zu codieren,
können wir dies jetzt aus unserer Aktion herausholen. productData, von der Eigentümer-ID dort, weil ich
das gerade dort hinzugefügt habe.
Also hier Produkte, ich habe Eigentümer-ID hinzugefügt, ich habe diesen Schlüssel zu Produktdaten hinzugefügt, zu der Aktion, die
ich versende, jetzt im Reduzierer, wir müssen das verwenden, es hier extrahieren und das als Eigentümer-ID des Produkts
verwenden, das wir lokal erstellen in Redux.
Dies bedeutet natürlich auch, dass ich hier, wenn ich die Produkte erhalte, die diesem Benutzer gehören, auch sicherstellen möchte,
dass ich richtig nach der richtigen ID filtere.
Wenn wir hier Set-Produkte aufrufen, möchte ich sicherstellen, dass Benutzerprodukte wirklich auf
den angemeldeten Benutzer heruntergefiltert werden. Wenn wir also im Produktaktionsersteller alle Produkte abrufen, möchte ich hier natürlich alle Produkte abrufen, aber
Dort möchte ich auch meinen Status abrufen können, damit ich meine Benutzer-ID aus dem Status abrufen kann, da ich hier beim Erstellen
der geladenen Produkte nicht nur diese weiterleiten, sondern auch einen neuen Benutzer hinzufügen
möchte Produkte Schlüssel zu meinem Aktionsobjekt, wo ich die geladenen Produkte nehme und hier filtere ich
und ich schaue mir jedes Produkt an und wenn die Eigentümer-ID des Produkts, wenn das gleich der Benutzer-ID ist, dann möchte ich es
behalten, weil dann Es ist ein Produkt, das vom aktuell angemeldeten Benutzer erstellt wurde, andernfalls
werde
ich es nicht behalten.
Es ist immer noch Teil des geladenen Produkts, das ich an das Produkt übergebe, aber nicht Teil
der Produkte, die ich
an Benutzerprodukte übergeben habe. Dadurch kann ich zum Reduzierer zurückkehren und dort in festgelegten Produkten werden Benutzerprodukte nicht
durch Filtern hier, sondern durch Festlegen initialisiert Es entspricht Aktionsbenutzerprodukten, die jetzt die gefilterten Produkte verwenden, die im Aktionsersteller mit der Logik
gefiltert wurden, die wir gerade geschrieben haben, wo wir die Benutzer-ID verwenden. Dies stellt sicher, dass wir nur die
Produkte sehen, die wir wirklich erstellt haben, und nicht die Produkte anderer Benutzer.
Jetzt können wir natürlich auch sicherstellen, dass wir in unserem Produktgeschäft hier nicht
mit unseren Dummy-Produkten beginnen, sondern
in beiden Fällen tatsächlich mit einem leeren Array. Dies bedeutet natürlich auch, dass wir jetzt, wenn wir dies speichern und
uns anmelden, in der Lage sein sollten, unser vorheriges Produkt
anzuzeigen.
Hier ist es, aber wenn ich zum Administrator
gehe, sehen wir es dort nicht und das macht sehr viel Sinn, weil Dieses
Produkt wurde früher im Kurs erstellt und hat daher keine Eigentümer-ID. Dieses Produkt hat keine Besitzer-ID, daher ist es in keinem Benutzerprodukt enthalten, was großartig ist, da
ich jetzt ein schönes Beispiel dafür habe, dass es noch keine Produkte gibt.
Vielleicht sollten wir hier auch eine Nachricht anzeigen.
Als Randnotiz in Bestellungen sehen wir auch nichts
und vielleicht sollten wir auch hier eine Nachricht anzeigen, da Bestellungen für U1 jetzt keine gültige Benutzer-ID mehr sind,
sodass diese
Bestellungen für keinen Benutzer geladen werden und das ist gut so das ist wie es sein sollte.
Jetzt werde ich diese Seiten ein wenig optimieren, um eine Meldung anzuzeigen, wenn wir keine Daten laden können.
Wenn also hier im Benutzerproduktbildschirm die Länge der Benutzerprodukte gleich Null ist, möchte ich meine flache Liste nicht zurückgeben, sondern hier eine Ansicht zurückgeben, in
der ich einen Text habe, in dem ich sage, dass möglicherweise keine Produkte gefunden wurden Beginnen Sie mit dem Erstellen einiger Stile, und wir
müssen dort einige Stile einrichten. Außerdem müssen wir die Ansicht und den Text importieren, da wir dies
sonst nicht anzeigen können. Jetzt mache ich
hier nur noch ein
schnelles und schmutziges Inline-Styling mit Flex One Content Center und Align Items Center. Natürlich können Sie hier auch dem Text Ihre
eigene Schriftart zuweisen. Ich mache das einfach so und kopiere es dann und verschiebe es
auf den Bestellbildschirm. Stellen Sie sicher, dass Sie die Ansicht anzeigen und Text
auch dort und dann können wir hier auch
diesen Scheck hinzufügen, wenn die Länge der Benutzerprodukte leer ist, sollten wir hier natürlich die Länge der Bestellungen
überprüfen, nicht die Länge der Benutzerprodukte, aber wenn diese leer ist, sage ich, dass keine Bestellungen
gefunden wurden, beginnen Sie vielleicht mit der Bestellung Einige Produkte wie dieses und damit
sollten wir diesen Text sehen, wenn nichts gefunden wird.
Wenn ich das jetzt noch einmal versuche und mich ganz schnell anmelde und wir zur Administrationsseite gehen, sehen wir den Text hier und wenn wir
zur Bestellseite gehen,
sehen wir auch den Text hier.
Jetzt funktioniert es so, wie es sollte.
Wenn ich jetzt andererseits ein neues Produkt erstelle, zum Beispiel einen Schal, sagen wir mal mit einer netten kleinen
URL, die ich für 55 Dollar ausgewählt habe. 99, ein Wollschal, wenn ich das mache und dies einreiche,
funktioniert das gut und es erscheint auch hier unter admin, erscheint auch unter Produkten, wir könnten es natürlich auch dort herausfiltern, wenn Sie
wollten, aber warum nicht, warum Haben wir es nicht auch hier und
wenn ich es
in den Warenkorb lege und jetzt auf Bestellung klicke, jetzt hier unter Bestellungen, sehen wir es und auf Firebase sehen wir auch,
dass wir unter Bestellungen jetzt einen Knoten mit unserer Benutzer-ID mit unserer haben Aufträge.
Das funktioniert jetzt wirklich so, wie es hier in dieser Anwendung
sein sollte, und deshalb haben wir jetzt hier ein Setup, mit dem wir arbeiten können.