Quindi ora per finire in questo modulo, voglio assicurarmi di salvare anche gli ordini su un server
e, naturalmente, che li prendiamo anche da lì.
Ora abbiamo il creatore dell'azione degli ordini qua e là, possiamo ancora approfittare di Redux Thunk e restituire la
nostra funzione qui, che ottiene quella funzione di invio, che dovrebbe essere asincrona con la parola chiave
asincrona in modo da poter usare async
wait e in quella funzione qui che restituiamo, alla fine ovviamente spedirò il mio oggetto azione ma prima di farlo,
ora possiamo inviare una richiesta per archiviare quell'ordine su un server e possiamo prendere in prestito quella richiesta
dal creatore dell'azione prodotti. Non c'è davvero una
grande differenza se creiamo un prodotto o quell'ordine, quindi possiamo copiare l'intero codice di
creazione del prodotto qui fino a qui e spostarlo negli ordini. file js.
Ora, ovviamente, puoi anche aggiungere
la gestione degli errori qui, non lo sto avendo qui, una cosa che voglio almeno aggiungere è che non
ottengo un controllo se la risposta non è ok
nel qual caso voglio per lanciare un nuovo errore, qualcosa è andato storto, ma questo non dovrebbe essere l'obiettivo qui
perché abbiamo coperto la gestione
degli errori e il caricamento dei filatori,
non proprio la parte su cui voglio concentrarmi qui, ma assicuriamoci di inviare questa richiesta
al
indirizzo giusto e che non dovrebbe essere il nodo dei prodotti ma diciamo il nodo
degli ordini che senso ha senso immagino perché vogliamo archiviare i nostri ordini. Forse vogliamo anche memorizzare i nostri ordini specifici per quell'utente in modo da poterlo archiviare in
/ ordini / U1 che è il mio ID utente fittizio che presumo qui. In seguito sarà diverso, in seguito avremo
un ID reale qui, un ID dinamico, per ora
cerchiamo di codificarlo qui in modo da avere una sottocartella, una sottocartella per utente in seguito.
Dovrebbe essere una richiesta post perché stiamo aggiungendo, stiamo aggiungendo alcuni nuovi dati, stiamo aggiungendo un nuovo ordine.
Questa intestazione deve essere impostata e ovviamente
i dati che stiamo inviando sono diversi però. Lì voglio inviare
gli articoli della mia carta e il mio importo totale e un'altra cosa importante, la data dell'ordine.
Voglio inviare la mia data qui convertita in una stringa con toISOString sull'oggetto data in modo da
crearla localmente nell'app e quindi salvare il timestamp sul server.
Ora nella tua app, potresti anche voler fare quella data di creazione sul server ma poiché
questo corso non dovrebbe concentrarsi sulla programmazione lato server, lo faremo semplicemente qui e lo invieremo al
server senza preoccuparci troppo cos'altro potrebbe fare
un server per noi, invece facciamo tutte le cose qui e inviamo semplicemente il timestamp finito al server.
Ora questo aggiungerà un ordine qui e una volta terminato, recupereremo i nostri dati di
risposta che includeranno quell'ID generato automaticamente se ricordi, lo abbiamo fatto anche sulla creazione del prodotto.
Quindi ora, quando aggiungiamo un ordine, ovviamente inoltriamo i nostri articoli e l'importo, ma ora voglio anche
inoltrare l'ID che ottengo da resData. nome, è la stessa logica
che abbiamo usato quando abbiamo creato un prodotto e c'è un'altra cosa, la mia istantanea della data ovviamente
dovrebbe essere la stessa creata qui.
Quindi in realtà quello che farò è che creerò la mia istantanea qui, la data con una nuova data e quindi userò questa costante qui per creare
la mia versione di stringa e userò la stessa costante qui per inoltrarla con i dati del mio ordine.
Quindi qui la data si riferisce a questa costante
di data, in modo che io utilizzi lo stesso timestamp, sia localmente nei miei dati gestiti con Redux che
sono i dati con cui lavoro qui in questa app in esecuzione e ovviamente hanno anche lo stesso timestamp sul server quali
sono i dati che caricherò in futuro o altri dispositivi caricheranno. E ora dobbiamo solo lavorare sul
riduttore degli ordini per aggiungere un ordine.
L'ID ora è qualcosa che ottengo dall'esterno,
quindi qui ho orderData. Id perché è quello che
stiamo inoltrando qui, è che ID Firebase generato automaticamente ci dà e la data
viene ricevuta anche dall'esterno, qui ora possiamo usare orderData. data in questo modo e con ciò, abbiamo tutta la logica
per aggiungere un ordine.
Ora torniamo qui e aggiungiamo questo al carrello e facciamo clic su Ordina ora, questo sembra funzionare, se torniamo ora
vediamo un nodo ordini qui su Firebase con una sottocartella U1 per il nostro utente con l'ID
univoco generato e lì, i dati dell'ordine con il timestamp con il prezzo, con gli elementi della carta che
era questa camicia bianca e che non sembra affatto male direi.