Estoy creando un sitio web de publicación con vue y firebase , cuando un usuario crea una publicación, su nombre de usuario se mostrará en la publicación.
Por ejemplo:
Creado por user1
Todo esto funciona bien. Ahora estoy trabajando en una página de usuario, donde puede ver el nombre y el correo electrónico del usuario.
El problema es que no me aparece el correo electrónico ni el nombre.
Este es mi código:
parte de la página PostDetails
<router-link :to="{ name: 'UserDetails', params: { userId: playlist.userId } }" class="username"> Created by {{ playlist.userName }} </router-link>Página de detalles del usuario:
<template> <div>{{ user.displayName }}</div> </template> <script> import getDocument from "@/composables/getDocument"; export default { props: ["userId"], setup(props) { const { error, document } = getDocument("users", props.userId); const userName = document.value.displayName return { error, userName, }; }, }; </script> <style></style>Este es el sitio web en sí: Sitio web
Y así es como se ve la base de datos:
Lo que quiero hacer es cada vez que esté en una publicación, puede hacer clic en el nombre de usuario (esto ya lo he hecho) y luego en la página Detalles del usuario, puede ver el usuario y el correo electrónico de la publicación en la que estaba.
Un enfoque clásico en el mundo de NoSQL es desnormalizar los datos de tal manera que obtenga los datos necesarios para una pantalla de aplicación específica con solo una consulta. En otras palabras, usted no "vincula" los dos registros, utilizando una combinación como lo haría en el mundo SQL, sino que coloca todos los datos en el registro para que se muestren.
Más concretamente, significa que en cada documento de la lista de reproducción duplicarías los datos de su autor (nombre de userName , como ya lo haces, pero también email ).
Un efecto secundario de este enfoque es que necesita mantener los valores sincronizados (es decir, el del documento de usuario y los de los documentos de listas de reproducción). Esta sincronización podría realizarse con una función en la nube activada si se modifica el documento del usuario.
Nuevamente, no debe tener miedo de duplicar datos y desnormalizar su modelo de datos. Aquí hay una publicación "famosa" sobre enfoques de modelado de datos NoSQL: