Estoy tratando de enviar notificaciones usando las funciones de la nube de Firebase, pero cuando actualizo el campo, muestra que la Función devolvió la Promesa o el valor indefinido esperado primero, y luego la ejecución de la Función tomó 364 ms, terminó con el estado: 'ok'.
Mi código
const functions = require("firebase-functions"); const admin = require("firebase-admin"); admin.initializeApp(); exports.updateOrderStatus = functions.firestore .document("Users/{userId}/Info_Notifications/{notificationId}") .onUpdate((change, context) => { const newValue = change.after.data(); const notificationFor = newValue.orderFrom; let deviceID; const db = admin.firestore(); db.collection("Tokens").doc(notificationFor).get() .then((doc) => { const user = doc.data(); deviceID = user.id; console.log("Device id", deviceID); const payload = { token: deviceID, notification: { title: "Test Notification", body: "message", }, data: { priority: "high", timeToLive: "60 * 60* 24", }, }; console.log("Device ID Out", deviceID); admin.messaging().sendToDevice(payload) .then((response) =>{ return true; }) .catch((error) =>{ return console.log("Error Sending Notifications", error); }); return null; }).catch((error)=>{ return console.log("Error in fetching data", error); }); });Te falta un retorno en la línea db.collection("Tokens").doc(notificationFor).get()
también debe devolver nulo y asegurarse de pasar una promesa o valor
const functions = require("firebase-functions"); const admin = require("firebase-admin"); admin.initializeApp(); exports.updateOrderStatus = functions.firestore .document("Users/{userId}/Info_Notifications/{notificationId}") .onUpdate((change, context) => { const newValue = change.after.data(); const notificationFor = newValue.orderFrom; let deviceID; const db = admin.firestore(); return db.collection("Tokens").doc(notificationFor).get() .then((doc) => { const user = doc.data(); deviceID = user.id; console.log("Device id", deviceID); const payload = { token: deviceID, notification: { title: "Test Notification", body: "message", }, data: { priority: "high", timeToLive: "60 * 60* 24", }, }; console.log("Device ID Out", deviceID); admin.messaging().sendToDevice(payload) .then((response) =>{ return true; }) .catch((error) =>{ console.log("Error Sending Notifications", error); return false; }); }).catch((error)=>{ console.log("Error in fetching data", error); return false; }); });