Estamos agregando tokens en todas partes, lo cual es importante, pero para los pedidos, no solo queremos agregar
el token, también queremos asegurarnos de que los pedidos realmente pertenezcan al usuario conectado.
Ahora lo bueno es que estamos almacenando el ID de usuario que Firebase generó en nuestra tienda Redux.
Entonces, asignar nuestros pedidos a los usuarios no es demasiado difícil, tenemos acceso a nuestra tienda completa aquí, para
que podamos obtener el ID de usuario llamando a getState. auth. userId, eso es todo, esto
nos da el ID de usuario del usuario actualmente
conectado y ahora podemos inyectar esto aquí y reemplazar el U1 codificado con ID de usuario.
Por supuesto, no solo para agregar pedidos, sino también para buscar pedidos porque queremos obtener los pedidos del usuario
que ha iniciado sesión actualmente.
Entonces, aquí, también recibamos ese segundo argumento, obtenga nuestro ID de usuario y aquí intercambiemos comillas
simples por ticks posteriores para que podamos usar esta inyección dinámica conveniente aquí y luego reemplazar o interpolar como se
llama esta cadena aquí agregando el ID de usuario. Así que ahora también se asegura de que los pedidos se almacenen correctamente, pero por supuesto
no se trata
solo de los pedidos, sino que los productos también deben almacenarse de esa manera. Debemos asegurarnos de que cuando creamos un
producto, realmente agreguemos nuestra identificación de propietario, eso es algo que actualmente
no estamos haciendo y eso es algo que deberíamos hacer.
Así que aquí, en realidad también quiero obtener el ID de usuario aquí en crear producto y cuando luego
envío mi solicitud para crear un nuevo producto, no solo quiero establecer el título, la descripción, etc., también quiero
establecer
un propietario El campo de identificación y el nombre exacto dependen de usted, que es igual al ID de usuario del usuario conectado y eso
es ahora algo completamente
nuevo, ahora realmente comenzamos a mapear
productos a un usuario, algo que solo hacíamos de manera ficticia antes. Esto también significa que cuando enviamos un producto creado aquí,
quiero pasar una nueva información, también quiero agregar el ID del propietario allí y también señalar el
ID de usuario aquí y eso significa que en el reductor de productos,
tenemos que respetar esto y allí, en lugar de codificar esta
ID aquí, ahora podemos obtener esto de nuestra acción. productData, de la identificación del propietario allí porque eso
es lo que acabo de agregar allí.
Entonces, aquí productos, agregué ID de propietario, agregué esta clave a los datos del producto, a la acción
que despacho, ahora en el reductor, tenemos que usar eso, extraerlo aquí y usarlo como una identificación de propietario
del producto que creamos localmente en Redux
Por supuesto, esto también significa que aquí, cuando obtengo los productos que pertenecen a ese usuario, también quiero asegurarme
de que filtre correctamente para la identificación correcta.
Entonces, cuando llamamos a los productos establecidos aquí, quiero asegurarme de que los
productos del usuario se filtren realmente hacia el usuario conectado, por lo que en el creador de acciones de productos, cuando buscamos todos
los productos, aquí, por supuesto, quiero buscar todos los productos, pero allí, también quiero poder obtener mi estado para poder obtener mi ID
de usuario del estado porque luego, cuando creamos los productos cargados, no solo quiero
reenviarlos, también quiero agregar un nuevo usuario clave de productos para mi objeto de acción donde tomo
los productos cargados y aquí los filtro y miro cada producto y si el ID del propietario del producto, si es igual al ID de
usuario, quiero conservarlo porque entonces es un producto creado por el usuario actualmente conectado, de
lo
contrario no lo conservaré.
Todavía es parte del producto cargado que paso al producto, pero no es parte de los productos que pasé
a los productos del usuario
y eso me permite volver al reductor y allí en los productos establecidos, los productos del usuario se inicializan no
filtrando aquí sino configurando es igual a los productos de usuario de acción que ahora toman los productos filtrados filtrados en el creador de acción
con la lógica que acabamos de escribir donde llevamos el ID de usuario. Esto asegura que solo veamos los productos
que realmente creamos y que no vemos el producto de otros usuarios.
Ahora, por supuesto, ahora también podemos asegurarnos de que en nuestra tienda de productos aquí, no
comencemos con nuestros productos ficticios, sino
que comencemos con una matriz vacía en ambos casos aquí. Esto también significa, por supuesto, que ahora si guardamos esto e
iniciamos sesión, deberíamos poder ver nuestro producto anterior, aquí está,
pero
si voy al administrador, no lo vemos
allí y eso tiene mucho sentido porque Este producto se creó anteriormente en el
curso y, por lo tanto, no tiene ID de propietario. Este producto no tiene ID de propietario, por lo que no está incluido en ningún producto de usuarios, lo
cual es genial porque ahora tengo un buen ejemplo de que todavía no hay
productos, tal vez también deberíamos mostrar un mensaje aquí.
Como nota al margen en los pedidos, tampoco vemos nada
y tal vez deberíamos mostrar un mensaje aquí también porque los pedidos para U1 ya no son una identificación de usuario
válida, por
lo que estos pedidos nunca se cargan para ningún usuario y eso es bueno porque así es como debería ser.
Así que ahora con eso, solo ajustaré un poco estas páginas para mostrar un mensaje si no podemos cargar ningún dato.
Entonces, aquí en la pantalla de productos de usuario, si la longitud de los productos de usuario es igual a cero, entonces no quiero devolver mi lista
plana, sino que devolveré una vista aquí donde tengo un texto donde digo que no se encontraron productos, tal vez comience a crear algunos y necesitaremos
configurar algunos estilos allí, también tenemos que importar la vista y el texto, de lo contrario no
podemos mostrar esto y ahora haré un
estilo en línea rápido y
sucio aquí con Flex One, justifique centro de contenido y centro de elementos de alineación, por supuesto, también puede asignar su propia fuente
aquí al texto y así sucesivamente, simplemente lo haré así y luego lo copiaré y lo
moveré a la pantalla de pedidos, asegúrese de importar la vista y texto allí
también y luego aquí también podemos agregar esta verificación,
si la longitud de los productos del usuario está vacía, por supuesto, aquí deberíamos verificar la longitud de los
pedidos, no la longitud de los productos del usuario, pero si está vacía, digo que no se
encontraron pedidos, tal vez comience a ordenar algunos productos como ese y con eso,
deberíamos ver ese texto si no se encuentra nada.
Entonces, si ahora vuelvo a intentarlo e inicio sesión muy rápido y vamos a la página de administración, vemos el texto aquí y si vamos a
la página de
pedidos, también vemos el texto aquí.
Así que ahora está funcionando como debería.
Si ahora creo un nuevo producto, por ejemplo, una bufanda, digamos con una pequeña
URL que seleccioné por $ 55. 99, una bufanda de lana, si hago eso y lo
envío, esto funciona bien y también se muestra aquí bajo admin, también se muestra bajo productos, por supuesto, también podríamos filtrarlo si lo
desea, pero por qué no, por qué no lo tenemos aquí
también y si
agrego esto al carrito y hago clic en ordenar ahora, ahora aquí bajo pedidos, lo vemos y en Firebase, también vemos que
bajo pedidos ahora tenemos un nodo con nuestro ID de usuario con nuestro pedidos.
Entonces, esto realmente está funcionando como debería en esta aplicación
y, por lo tanto, ahora aquí, tenemos una configuración con la que podemos trabajar.