Este código lo usé para almacenar usuarios en firebase.
this.db .doc('/users/' + user.uid) .set({ name: user.displayName, email: user.email, }) .then(() => console.log('user saved successfully')) .catch((reason: any) => console.log('user save failed:', reason));Los usuarios también tienen una propiedad isAdmin que se establece en otro lugar. Cuando inicio sesión como un nuevo usuario, el usuario obtiene un nombre y un correo electrónico.
Si hago que el usuario sea administrador, puedo visitar las páginas solo para administradores. el problema es que, si actualizo en una página de administración, me expulsan de la página. Creo que el problema es el método set, ya que no contiene la propiedad isAdmin
Cuando uso actualizar en lugar de establecer, funciona bien cuando actualizo, pero ahora no puedo crear nuevos registros para nuevos usuarios.
¿Cuál es la mejor manera de abordar esto?
Está buscando fusionar los datos en su llamada establecida con los datos existentes (si corresponde), lo que puede hacer especificando las opciones establecidas:
this.db .doc('/users/' + user.uid) .set({ name: user.displayName, email: user.email, }, { merge: true }) // 👈Consulte también: https://firebase.google.com/docs/firestore/manage-data/add-data#set_a_document