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: 
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:

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); }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:
userToken.forEach((token) => { console.log(token); tokens.push(token); }); 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.