Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

203
Vistas
La base de datos en tiempo real de firebase no funciona como se esperaba

Soy un desarrollador junior, así que sean fáciles conmigo.

Mi objetivo es autenticar a un usuario de forma anónima cuando abre la página de inicio, luego, si todo salió bien, obtiene los datos de la base de datos en tiempo real, ¡pero solo si la coincidencia de uid está bien!

He ahí mis reglas:

 { "rules": { "$uid": { ".read": "auth != null && auth.uid == $uid", ".write": "false", } } }

Mi base de datos está estructurada así https://ibb.co/jkRBCsF


El inicio de sesión anónimo está en el contexto.

 export const AuthContextProvider = ({ children }: Props) => { React.useEffect(() => { signInAnonymously(auth) .then(() => { // Signed in.. }) .catch((error) => { const errorCode = error.code; const errorMessage = error.message; // ... }); }, []); const values = {}; return <AuthContext.Provider value={values}>{children}</AuthContext.Provider>; };

Luego, cuando abro una página, por ejemplo, '/crew', getStaticProps inicia fetchPlanetInfo

 export const getStaticProps: GetStaticProps = async () => { const planetInfo = await fetchPlanetsInfo("destinations"); return { props: { data: planetInfo, }, }; };
 export function fetchPlanetsInfo(query: string) { let dataArr: any = []; try { onAuthStateChanged(auth, (user) => { if (user) { const uid = user.uid; const databaseCall = ref(db, uid + "/" + query); onValue(databaseCall, (snapshot) => { const data = snapshot.val(); dataArr.push(data); }); } else { console.log("user is signout"); // User is signed out // ... } }); } catch (error) { console.log(error); } return dataArr.flat(); }

Intenté averiguar dónde está el error pero no encontré la solución.

Mi problema es que los datos no se obtienen de la base de datos. fetchPlanetsInfo devuelve nulo. Creo que mis reglas están mal escritas.

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda