Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

114
Views
Funciones de Firebase con actualización de base de datos en tiempo real hijo de hijo

Tengo un hijo que se crea dentro de mi RTDB en firebase. Esto sucede mediante un servicio web que envía estos datos a Firebase a través de la API Rest. Sucede cada 10 min. Los datos llegan y la función los recoge cuando ocurren. El nodo contiene un par de valores, pero específicamente un dispositivo: el valor "3523EB" que se necesita para la siguiente parte. A continuación se muestra la estructura de los datos de ese nodo:

ingrese la descripción de la imagen aquí

El valor de 'dispositivo' aquí "3523EB" necesita actualizar una tabla diferente que debe buscar con e igual a en la tabla de dispositivos. El problema es que la tabla de dispositivos tiene el ID de usuario y la clave. Entonces, son 2 valores desconocidos los que necesita buscar, ya que los niños que busca contienen imei: "3523EB" y solo ese niño necesita ser actualizado.

Intenté usar ref.orderByChild("imei").equalTo(deviceRef).on("child_added", function(snapshot) {

ingrese la descripción de la imagen aquí

Por lo tanto, el dispositivo: "3523EB" en la tabla sigfox tiene que buscar y actualizar solo el niño con estos datos como imei: "3523EB" en la tabla de dispositivos , pero {UserId} y {key} donde reside la tabla en dispositivos es desconocido

Obtener los valores de sigfox en la función cuando llega a la base de datos no es un problema: tomar el valor y buscar al niño en los dispositivos y luego actualizar ese niño resulta ser un desafío.

 exports.UpdateDeviceData = functions.database.ref('sigfox/{key}/') .onCreate((snapshot, context) => { const deviceRef = snapshot.val()['device']; const batteryRef = snapshot.val()['battery']; const speedRef = snapshot.val()['speed']; const temperatureRef = snapshot.val()['temperature']; const latitudeRef = snapshot.val()['latitude']; const longitudeRef = snapshot.val()['longitude']; const timeRef = snapshot.val()['time']; const now = new Date().getTime(); functions.logger.log('Sigfox Data Updated for device: ', deviceRef); var db = admin.database(); var refi = db.ref("devices/"); refi.once("value", function(snapshot) { snapshot.forEach(function(child) { var key = child.key; snapshot.ref.update({ battery: batteryRef, speed: speedRef, temperature: temperatureRef, lati: latitudeRef, longi: longitudeRef, updateTime: timeRef }) functions.logger.log('Device Key Details: ',child.val()); }) }); return null; });

Por favor ayuda...

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Reestructurado y funciona perfectamente bien ahora:

 var db = admin.database(); var query = db.ref('devices/' + deviceRef).orderByChild("imei").equalTo(deviceRef); query.on("child_added", function (snapshot) { snapshot.ref.update({ battery: batteryRef, speed: speedRef, temperature: temperatureRef, lati: latitudeRef, longi: longitudeRef, updated: now}) });

gracias a: Frank van Puffelen

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!