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

235
Vistas
Recupere una matriz de un documento de Firestore y guárdela en Node.Js y luego utilícela como token para enviar notificaciones.

He estado tratando de resolver esto durante horas y simplemente no puedo. Todavía soy un principiante con Node.js y Firebase. Necesito su ayuda para poder recuperar la matriz de tokens en mi colección de "datos de usuario" en Node.js y poder usarla para enviar notificaciones en Cloud Function. Hasta ahora esto es en lo que he estado trabajando. Así es como se ve mi base de datos: ingrese la descripción de la imagen aquí

El ID del receptor se recopila cuando tengo una función onCreate cada vez que un usuario envía un mensaje nuevo. Luego lo usé para acceder a los datos de usuario de un usuario específico que usa el ID del receptor como su UID.

En la función de la nube , pude iniciar la función y recuperar el ID del receptor e imprimir el token de usuario [clave]. Sin embargo, cuando trato de empujar el token, no pasa y da como resultado un error que dice que el token está vacío. Ver la imagen: ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Su ayuda significaría mucho. ¡Gracias!

 newData = snapshot.data(); console.log("Retrieving Receiver Id"); console.log(newData.receiverId); //uid of the user const tokens = []; const docRef = db.collection('userdata').doc(newData.receiverId); docRef.get().then((doc) => { if (doc.exists) { console.log("DocRef exist"); const userToken = doc.data().tokens; for(var key in userToken){ console.log(userToken[key]); tokens.push(userToken[key]); } } else { // doc.data() will be undefined in this case console.log("No such document!"); } }).catch((error) => { console.log("Error getting document:", error); }); //Notification Payload var payload = { notification: { title: newData.sendBy, body: 'Sent you a message', sound: 'default', }, data: { click_action : 'FLUTTER_NOTIFICATION_CLICK', route: '/telconsultinbox', } }; console.log("Sending Notification now."); console.log(tokens); try{ //send to device const response = await admin.messaging().sendToDevice(tokens, payload); console.log('Notification sent successfully'); console.log(newData.sendBy); }catch(err){ console.log(err); }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Creo que debería evitar usar for..in para iterar a través de una matriz (puede leer más sobre esto en esta respuesta ). Prueba una de estas 2 opciones:

  1. Podrías usar forEach() , que es más elegante:
 userToken.forEach((token) => { console.log(token); tokens.push(token); });
  1. declaración for-of :
 for(const token of userToken){ console.log(token); tokens.push(token); }

Además, consideraría cambiar el nombre de userToken a userToken s , ya que debe contener varios valores. Hace que el código sea un poco más legible.

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