Stiamo aggiungendo token ovunque, il che è importante, ma per gli ordini, non vogliamo solo aggiungere il token,
ma vogliamo anche assicurarci che gli ordini appartengano davvero all'utente che ha effettuato l'accesso.
Ora la cosa buona è che stiamo memorizzando l'utenteId che Firebase ha generato nel nostro negozio Redux.
Quindi mappare i nostri ordini agli utenti non è troppo difficile, qui abbiamo accesso al nostro
negozio completo, quindi possiamo ottenere userId chiamando getState. auth. userId, tutto qui,
questo ci dà l'ID utente dell'utente attualmente
connesso e ora possiamo iniettarlo qui e sostituire l'U1 hardcoded con userId.
Ovviamente non solo per l'aggiunta di ordini ma anche per il recupero di ordini perché vogliamo recuperare
gli ordini dell'utente attualmente connesso.
Quindi qui, riceviamo anche quel secondo argomento, otteniamo il nostro userId e qui scambiamo virgolette
singole per tick posteriori in modo che possiamo usare questa comoda iniezione dinamica qui e quindi sostituire o interpolare
come qui viene chiamata questa stringa aggiungendo userId. Quindi questo ora assicura anche che gli ordini vengano archiviati correttamente ma ovviamente non
sono solo gli
ordini, ma anche i prodotti dovrebbero essere archiviati in questo modo. Dovremmo assicurarci che quando creiamo un prodotto,
in realtà aggiungiamo il nostro ID proprietario ad esso, è qualcosa che attualmente
non stiamo facendo e che è qualcosa che dovremmo fare.
Quindi qui, in realtà voglio anche ottenere l'utenteId qui nel creare prodotto e quando invio la mia richiesta
per creare un nuovo prodotto, non voglio solo impostare il titolo, la descrizione e così via, voglio anche
impostare
un proprietario Campo ID e il nome esatto dipende da te, che è uguale all'ID utente dell'utente che ha effettuato l'accesso e che ora è
qualcosa di nuovo, ora
iniziamo davvero a mappare i prodotti
su un utente, qualcosa che abbiamo fatto solo in modo fittizio prima. Ciò significa anche che, quando spediamo il prodotto qui,
voglio passare una nuova informazione, voglio aggiungere anche l'ID proprietario lì e anche indicare l'utenteId
qui e ciò significa che nel riduttore dei prodotti, dobbiamo rispettare
questo e lì dentro, invece di codificare questo ID qui,
ora possiamo ottenere questo dalla nostra azione. productData, dall'ID proprietario lì perché è quello
che ho appena aggiunto lì.
Quindi qui prodotti, ho aggiunto l'ID proprietario, ho aggiunto questa chiave ai dati del prodotto,
all'azione che invio, ora nel riduttore, dobbiamo usarlo, estrarlo qui e usarlo come ID proprietario del
prodotto che creiamo localmente a Redux.
Naturalmente questo significa anche che qui, quando ottengo i prodotti che appartengono a quell'utente, voglio anche
assicurarmi di filtrare correttamente per l'ID corretto.
Quindi quando chiamiamo i prodotti impostati qui, voglio assicurarmi che i prodotti degli
utenti siano realmente filtrati verso il basso per l'utente che ha effettuato l'accesso, quindi nel creatore dell'azione dei prodotti, quando prendiamo tutti
i prodotti, qui ovviamente voglio recuperare tutti i prodotti ma lì, voglio anche essere in grado di ottenere il mio stato in
modo da poter ottenere il mio userId dallo stato perché quindi qui quando creiamo
i prodotti caricati, non voglio solo inoltrarli, voglio anche aggiungere un nuovo utente chiave prodotti per
il mio oggetto azione dove prendo i prodotti caricati e qui li filtro e guardo ogni prodotto e se l'ID proprietario del prodotto, se
è uguale all'Id utente, quindi voglio mantenerlo perché quindi è un prodotto creato dall'utente attualmente
connesso,
altrimenti non lo terrò.
Fa ancora parte del prodotto caricato che passo al prodotto ma non fa parte dei prodotti passati
ai prodotti dell'utente e
ciò mi consente di tornare al riduttore e lì nei prodotti impostati, i prodotti dell'utente vengono inizializzati
non filtrando qui ma impostando equivale ai prodotti di azione dell'utente che ora accetta i prodotti filtrati filtrati nel creatore di azioni
con la logica che abbiamo appena scritto dove portiamo l'ID utente. Questo ci assicura che vediamo solo i prodotti
che abbiamo davvero creato e che non vediamo il prodotto di altri utenti.
Ora ovviamente, a proposito, ora possiamo anche assicurarci che nel nostro negozio di prodotti qui, non iniziamo
con i nostri prodotti fittizi, ma in
realtà iniziamo con un array vuoto in entrambi i casi qui. Ciò significa ovviamente anche che ora se salviamo questo e accediamo,
dovremmo essere in grado di visualizzare il nostro prodotto precedente,
eccolo
qui, ma se vado all'amministratore, non lo
vediamo lì e questo ha molto senso perché questo prodotto è stato creato in
precedenza nel corso e pertanto non ha un ID proprietario. Questo prodotto non ha un ID proprietario, quindi non è incluso in alcun prodotto degli utenti, il
che è fantastico perché ora ho un buon esempio che non ci sono ancora
prodotti, forse dovremmo anche mostrare un messaggio qui.
Come nota a margine negli ordini, anche noi non vediamo
nulla e forse dovremmo mostrare un messaggio anche qui perché gli ordini per U1, che ora non è più un ID
utente valido,
quindi questi ordini non vengono mai caricati per nessun utente e va bene perché è così che dovrebbe essere.
Quindi ora con ciò, modificherò un po 'queste pagine per mostrare un messaggio se non possiamo caricare alcun dato.
Quindi qui nella schermata del prodotto dell'utente, se la lunghezza dei prodotti dell'utente è uguale a zero, non voglio restituire la mia lista piatta ma
invece restituirò una vista qui dove ho un testo in cui dico che non sono stati trovati prodotti, forse inizia a crearne alcuni e
avremo bisogno di impostare alcuni stili lì, dobbiamo anche importare la vista e il testo altrimenti
non possiamo visualizzarlo e ora farò solo
uno stile in linea
veloce e sporco qui con Flex One, giustificare centro contenuti e allinea centro oggetti, ovviamente puoi anche assegnare il tuo carattere
qui al testo e così via, lo farò in questo modo e poi lo copierò
e lo sposterò nella schermata degli ordini, assicurandoti di inport view e testo
anche lì e quindi qui possiamo anche aggiungere
questo controllo, se la lunghezza dei prodotti dell'utente è vuota, ovviamente qui dovremmo controllare la lunghezza degli ordini,
non la lunghezza dei prodotti dell'utente ma se è vuota, dico che non sono stati trovati
ordini, forse iniziare a ordinare alcuni prodotti come questo e con quello, dovremmo
vedere quel testo se non viene trovato nulla.
Quindi, se ora riprovo e accedo molto velocemente e andiamo alla pagina di amministrazione, vediamo il testo qui e se andiamo alla
pagina degli ordini,
vediamo anche il testo qui.
Quindi ora funziona come dovrebbe.
Se ora creo un nuovo prodotto, ad esempio una sciarpa, diciamo con un piccolo URL
che ho selezionato per $ 55. 99, una sciarpa di lana, se lo faccio e lo
invio, questo funziona bene e si presenta anche qui sotto admin, si presenta anche sotto prodotti, ovviamente potremmo anche filtrarlo là fuori se
lo volessi, ma perché no, perché non ce l'abbiamo anche qui e
se lo aggiungo
al carrello e faccio clic su Ordina ora, ora qui sotto gli ordini, lo vediamo e su Firebase, vediamo anche che sotto
gli ordini ora abbiamo un nodo con il nostro utenteId con il nostro ordini.
Quindi ora funziona davvero come dovrebbe qui su
questa applicazione e quindi ora qui, abbiamo una configurazione con cui possiamo lavorare.