• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

284
Vistas
¿Busca una clave en la base de datos de Firebase sin descargar el nodo principal?

Tengo una base de datos en tiempo real de Firebase que está estructurada así:

 referrals Test1: 0 Test2: 0

Estoy tratando de verificar si existe "referral_code" en la base de datos, este es el código que estoy usando:

 exports.validateReferral = functions.https.onCall((data, context) => { const referral_code = data.ref console.log("Cloud verifying referral code, code is " + referral_code) admin.database().ref().child("referrals").once("value", snapshot => { if (snapshot.hasChild(referral_code)) { console.log("referral code is valid"); return true } else { console.log("referral code is not valid"); return false } }) })

Cuando lo ejecuto, muestra "Código de referencia de verificación de la nube, el código es Test1", pero tampoco es válido a pesar de que la clave está en la base de datos.

¿Alguna idea de cómo puedo depurar esto? Intenté registrar el valor de "instantánea", pero ninguno de los contenidos de las instantáneas de Firebase muestra los valores reales. ¿Alguien puede ayudarme a encontrar la manera de localizar el problema?

about 3 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Te estás perdiendo un return en el nivel superior de tu código:

 // 👇 return admin.database().ref().child("referrals").once("value").then((snapshot) => { if (snapshot.hasChild(referral_code)) { console.log("referral code is valid"); return true } else { console.log("referral code is not valid"); return false } })

Sin la devolución de nivel superior, el valor de devolución de la devolución de llamada asíncrona nunca llega a su cliente y (peor aún) el código probablemente finaliza antes de que el resultado se lea de la base de datos.


Pero también recomiendo cambiar el código para no descargar todo el nodo de referrals solo para verificar si existe una clave. Esto logra lo mismo y solo descarga (como máximo) un solo nodo secundario:

 // 👇 👇 return admin.database().ref().child("referrals").child(referral_code).once("value").then((snapshot) => { // 👇 if (snapshot.exists()) { console.log("referral code is valid"); return true } else { console.log("referral code is not valid"); return false } })
about 3 years ago · Juan Pablo Isaza 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda