Estamos adicionando tokens em todos os lugares, o que é importante, mas para pedidos, não queremos apenas anexar
o token, também queremos garantir que os pedidos realmente pertençam ao usuário conectado.
Agora, o bom é que estamos armazenando o ID do usuário que o Firebase gerou em nossa loja Redux.
Portanto, mapear nossos pedidos para os usuários não é muito difícil, temos acesso a nossa loja completa
aqui, para que possamos obter o userId chamando getState. auth. userId, isso é tudo,
isso nos fornece o userId do usuário conectado no
momento e agora podemos injetar isso aqui e substituir o U1 codificado por userId.
Obviamente, não apenas para adicionar pedidos, mas também para buscar pedidos, porque queremos buscar os pedidos
do usuário conectado no momento.
Portanto, aqui, também recebemos o segundo argumento, obtemos nosso userId e trocamos aspas simples por
tick back, para que possamos usar essa injeção dinâmica conveniente aqui e, em seguida, substituir ou interpolar como é
chamada essa string aqui, adicionando o userId. Portanto, agora isso também garante que os pedidos sejam armazenados corretamente, mas é
claro que não
são apenas os pedidos; os produtos também devem ser armazenados. Deveríamos garantir que, quando criamos um produto,
adicionamos nosso ID de proprietário, isso é algo que não estamos
fazendo no momento e é algo que devemos fazer.
Então, aqui, na verdade, também quero que o userId seja criado em um produto e, quando enviar minha
solicitação para criar um novo produto, não quero apenas definir título, descrição e assim por diante, também quero
definir
um proprietário O campo de ID e o nome exato são com você, o que é igual ao userId do usuário conectado e isso
é algo totalmente novo,
agora realmente começamos a mapear produtos
para um usuário, algo que antes era feito apenas de maneira fictícia. Isso também significa que, quando enviamos a criação de produto
aqui, desejo passar uma nova informação, também quero adicionar o ID do proprietário e também apontar
para o ID do usuário aqui, o que significa que, no redutor de
produtos, precisamos respeitar isso e lá, em vez de codificar esse
ID aqui, agora podemos obtê-lo com nossa ação. productData, do ID do proprietário, porque foi
o que acabei de adicionar lá.
Então aqui produtos, adicionei o ID do proprietário, adicionei essa chave aos dados do produto, à
ação que despacho, agora no redutor, temos que usá-lo, extraí-lo aqui e usá-lo como um ID do
proprietário que criamos localmente no Redux.
É claro que isso também significa que, aqui, quando eu receber os produtos que pertencem a esse usuário, também quero
garantir que eu filtre corretamente o ID correto.
Portanto, quando chamamos produtos definidos aqui, quero garantir que os produtos dos
usuários sejam realmente filtrados para o usuário conectado, portanto, no criador da ação dos produtos, quando buscarmos todos os produtos, é claro
que quero buscar todos os produtos, mas lá, também quero poder obter meu estado para poder obter meu userId do estado, porque
aqui, quando criamos os produtos carregados, não quero apenas encaminhar esses itens, também quero
adicionar um novo usuário chave de produtos para o meu objeto de ação, onde eu pego
os produtos carregados e aqui os filtro e dou uma olhada em cada produto e, se o ID do proprietário do produto, se for
igual ao userId, quero mantê-lo, pois é um produto criado pelo usuário conectado no momento,
caso
contrário, não o manteremos.
Ainda faz parte do produto carregado que passo para o produto, mas não faz parte dos produtos que
passei para os produtos
do usuário e que me permite voltar ao redutor e lá nos produtos definidos, os produtos do usuário são
inicializados não filtrando aqui, mas definindo é igual aos produtos de usuário de ação que agora usam os produtos filtrados filtrados no criador da
ação com a lógica que acabamos de escrever para onde levamos o userId. Isso garante que apenas vejamos os
produtos que realmente criamos e não os produtos de outros usuários.
Agora, a propósito, agora também podemos garantir que em nossa loja de produtos aqui, não começamos
com nossos produtos fictícios, mas na
verdade começamos com uma matriz vazia nos dois casos aqui. Isso também significa, é claro, que agora, se salvarmos e fizermos
login, poderemos visualizar nosso produto anterior, aqui está ele, mas
se
eu for para o administrador, não o
veremos lá e isso fará muito sentido, porque este produto foi criado anteriormente
no curso e, portanto, não possui um ID do proprietário. Este produto não possui um ID de proprietário, portanto, não está incluído em nenhum produto de usuário,
o que é ótimo, porque agora tenho um bom exemplo de que ainda não
há produtos, talvez devamos mostrar uma mensagem aqui.
Como nota lateral nos pedidos, também não vemos nada e
talvez devamos mostrar uma mensagem aqui também porque os pedidos para o U1, que agora não são mais um ID de
usuário válido,
portanto esses pedidos nunca são carregados para nenhum usuário e isso é bom porque É assim que deve ser.
Então agora, com isso, ajustarei um pouco essas páginas para mostrar uma mensagem se não pudermos carregar dados.
Portanto, aqui na tela do produto do usuário, se o comprimento dos produtos do usuário for igual a zero, não quero retornar minha lista fixa,
mas retornarei uma visualização aqui onde tenho um texto onde digo que nenhum produto foi encontrado, talvez comece a criar alguns e precisaremos configurar
alguns estilos lá, também precisamos importar a visualização e o texto, caso contrário não podemos exibir
isso e agora vou fazer um estilo
em linha rápido e
sujo aqui com o flex one, justifique centro de conteúdo e centro de itens de alinhamento, é claro que você também
pode atribuir sua própria fonte aqui ao texto e assim por diante. Vou fazer assim
e depois copiar e movê-lo para a tela de pedidos. e o texto
também e aqui também podemos adicionar essa verificação,
se o comprimento dos produtos do usuário estiver vazio, é claro que devemos verificar o comprimento dos pedidos,
não o comprimento dos produtos do usuário, mas se estiver vazio, digo que nenhum pedido foi
encontrado, talvez comece a fazer o pedido alguns produtos como esse e com
isso, devemos ver esse texto se nada for encontrado.
Portanto, se agora eu tentar de novo e efetuar login rapidamente e formos para a página de administração, veremos o texto aqui e, se formos para
a página de
pedidos, também veremos o texto aqui.
Então agora está funcionando como deveria.
Por outro lado, se eu criar um novo produto, por exemplo, um cachecol, digamos com um URL
agradável que selecionei por US $ 55. 99, um cachecol de lã, se eu fizer isso e
enviar isso, isso funciona bem e também aparece aqui em admin, também aparece em produtos, é claro que também podemos filtrá-lo, se
você quiser, mas por que não, por que nós não temos
aqui também e
se eu adicionar isso ao carrinho e clicar em order now, agora aqui sob orders, vemos e no Firebase, também vemos
que, sob orders, temos um nó com o nosso userId com o nosso ordens.
Portanto, agora isso está realmente funcionando da maneira que deveria
aqui nesta aplicação e, portanto, agora aqui, temos uma configuração com a qual podemos trabalhar.