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

202
Vistas
Consulta de base de datos Firebase Realtime de v8 a v9 SDK

Tengo una consulta de base de datos de Firebase Realtime escrita con la versión 8 de Firebase que quiero migrar al SDK v9.

 export const getSingleDataWithQuery = async ({ key, email, criteria }) => { if (!criteria) return; const snapshot = await realTimeDb .ref() .child(key) .orderByChild(query) .equalTo(criteria) .get(); const val = snapshot.val(); if (val) { const keys = Object.keys(val); return val[keys[0]]; } return null; };

En este ejemplo:

  • la clave sería la colección ' usuarios '
  • el campo de correo electrónico está buscando usuarios por su correo electrónico
  • y el criterio es el correo electrónico real del usuario (jane.doe@gmail.com)

Usando los datos de lectura de Firebase una vez y la documentación de clasificación de datos , logré reducirlo a tal vez esto, pero no estoy seguro de si es correcto:

 export const getSingleDataWithQuery = async ({ key, query, criteria }) => { if (!criteria) return; const dbRef = query(ref(realTimeDb, key), orderByChild(email), equalTo(criteria)); get(dbRef).then(snapshot => { if (snapshot.exists()) { const val = snapshot.val(); if (val) { const keys = Object.keys(val); return val[keys[0]]; } } }); return null; };
about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Además del hecho de que es posible que haya intercambiado la query y el email en los fragmentos, la única diferencia está en la forma en que maneja la llamada a la base de datos asincrónica y eso probablemente explica la diferencia. Dado que utiliza then en el segundo fragmento, la función en realidad no devuelve una promesa, por lo que llamarla con await it en la persona que llama no tendrá ningún efecto.

Para que vuelvan a ser iguales, usa await en el segundo fragmento también, en lugar de then :

 export const getSingleDataWithQuery = async ({ key, query, criteria }) => { if (!criteria) return; const dbRef = query(ref(realTimeDb, key), orderByChild(email), equalTo(criteria)); const snapshot = await get(dbRef); // 👈 if (snapshot.exists()) { const val = snapshot.val(); if (val) { const keys = Object.keys(val); return val[keys[0]]; } } return null; };
about 4 years ago · Santiago Trujillo Denunciar
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