Usuario de Firebase photoURL y displayName
Estoy teniendo un tiempo tratando de entender lo que pensé que era un concepto simple.
Tengo una aplicación donde inscribo a un usuario, que le permite a ese usuario configurar una 'photoURL' a su información de 'usuario' en el sistema Firebase Auth. Esto funciona. Cuando el usuario crea una publicación en mi aplicación, quiero mostrar el título, la imagen y la 'fotoURL' del creador.
Actualmente, guardo la publicación:
-Post {
-id
-title
-image
-photoURL <- from current logged in user }
También permito a los usuarios visitar la página de carteles a través de enrutamiento / cartel / 'displayName'
Entonces, cuando un usuario actualiza su información de perfil como displayName o photoURL, ¿debo buscar todas las publicaciones, comentarios, mensajes, respuestas y cualquier otro lugar en el que este usuario tenga un registro y actualizar el photoURL?
Lo que pensé que podría hacer es decir: (pseudocódigo)
get all posts =>
foreach(post)
post = {
title: post.title.val()
image: post.image.val()
avatar: firebase.database().ref().child('users' + post.key)
}
Todo lo que leo dice que necesito almacenar esa fotoURL en mi propia tabla de 'Usuarios'. Si hago eso, entonces ninguna de las publicaciones se actualizará a menos que escriba una llamada al servidor para hacerlo cada vez que haya un cambio. El problema es que si tengo 100K usuarios, y el 10% de ellos cambian su photoURL, entonces tengo que cambiarlo en publicaciones, comentarios, respuestas y mensajes por usuario. Si el usuario promedio tiene 100 publicaciones, 4000 comentarios, 6000 respuestas, estamos viendo alrededor de 10K lugares * 10K usuarios que deben actualizarse y si la llamada promedio del servidor es 137ms, entonces mis costos son alrededor de $ 175 (costos)
La otra opción es extraer información de dos tablas y crear un nuevo objeto cada vez. Esto llevaría a duplicar las llamadas al servidor y el tiempo, duplicando así mis costos.
¿Es este el mejor enfoque para esto? Pensé que sería mucho más fácil obtener la foto de usuario y el nombre para mostrar.
Perdón por la larga publicación épica pero estoy tratando de aprender. ¡Gracias a todos!