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

252
Vistas
¿Cómo se hace un bucle forEach en una matriz que contiene datos recuperados de la base de datos JavaScript de Firebase?

Aquí está la estructura de mi base de datos:

ingrese la descripción de la imagen aquí

Estoy intentando escribir una función de base de fuego que pase por todas las barberías y recupere todos sus barberos.

En mi código a continuación, recuperé con éxito todos los nombres de las barberías y los almacené en una matriz, que se registra en la consola de la siguiente manera:

ingrese la descripción de la imagen aquí

Sin embargo, cuando intento pasar a la siguiente fase de mi función, no se ejecuta ninguno de los códigos en "barberShopArray.forEach((key)", y no sé por qué. Ni siquiera "console.log(key)" trabajar.

 const functions = require('firebase-functions'); const admin = require('firebase-admin'); admin.initializeApp(functions.config().firebase); var database = admin.database(); exports.addTimeNod2 = functions.pubsub.schedule('every 24 hours').onRun((context) => { var num = 1; let barberShopArray = []; return database.ref('/BarberShops/').once("value").then((snapshot) => { snapshot.forEach((childSnapshot) => { barberShopArray.push(childSnapshot.key); }); console.log(barberShopArray); return barberShopArray; }).then(barberShopArray.forEach((key) => { console.log(key); database.ref('/BarberShops/' + key + '/Barbers/Barber1/').once("value").then((snapshot)=> { if(snapshot.exists()) { database.ref('metadata/shop' + num +'/').set(key); num++; } return null; }).catch((error)=> { console.log(error); return error; }); return null; })); });
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

En mi caso lo hice

 const db = firebase.database().ref(); db.child("orders") .get() .then((snapshot) => { if (snapshot.exists()) { const fetchedOrders = []; for (let key in snapshot.val()) { fetchedOrders.push({ ...snapshot.val()[key], id: key }); } })

Para obtener más referencias, consulte este enlace

about 4 years ago · Juan Pablo Isaza Denunciar

0

Ha mencionado que la línea console.log(barberShopArray) funciona perfectamente. Después de la línea console.log(barberShopArray) y antes de la línea barberShopArray.forEach((key) , está utilizando una declaración de return barberShopArray . Por lo tanto, la parte de la función que está después de esa declaración de devolución no se está ejecutando. Elimine esa devolución declaración para resolver el problema. Además, no se requiere el método then() después de la declaración return barberShopArray . Así que modifique el código de la siguiente manera y debería funcionar y actualizar correctamente los metadata .

 const functions = require('firebase-functions'); const admin = require('firebase-admin'); admin.initializeApp(functions.config().firebase); var database = admin.database(); exports.addTimeNod2 = functions.pubsub.schedule('every 24 hours').onRun((context) => { var num = 1; let barberShopArray = []; return database.ref('/BarberShops/').once("value").then((snapshot) => { snapshot.forEach((childSnapshot) => { barberShopArray.push(childSnapshot.key); }); console.log(barberShopArray); barberShopArray.forEach((key) => { console.log(key); database.ref('/BarberShops/' + key + '/Barbers/Barber1/').once("value").then((snapshot) => { if (snapshot.exists()) { database.ref('metadata/shop' + num + '/').set(key); num++; } }).catch((error) => { console.log(error); return error; }); }); return null; }); });
about 4 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 Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda