Отсутствие смысла в обещаниях обычно является причиной узнать о них больше, а не не использовать их.
То, как вы сейчас написали свой код, означает, что часть его никогда не выполняется.Это пока не имеет ничего общего с обещаниями, а просто с тем фактом, что у вас есть два оператора возврата в основном потоке вашего кода:
exports.sendNotification = functions.firestore.document("Customer_Data/{userEmail}/Placed_Orders/{orderId}/status").onWrite(event => {
...
return admin.firestore().collection("Customer_Data").doc({userEmail}).get().then(queryResult => {
...
});
// Nothing below this line ever executes
return admin.messaging().sendToDevice(tokenId , notificationContent).then(function(response) {
console.log("Message sent successfully");
}).catch(function(error){
console.log("Error sending message:", error);
});
});
В этом случае вам нужны результаты из Firestore для отправкисообщение FCM, означающее, что вам нужно дождаться разрешения обещания Firestore (с then()
или await
), прежде чем вызывать FCM:
exports.sendNotification = functions.firestore.document("Customer_Data/{userEmail}/Placed_Orders/{orderId}/status").onWrite(event => {
const userEmail = event.params.userEmail;
const message = "Your meal will be delivered in 2 hours";
const title = "Eat Away";
const toUser = admin.firestore().collection("Customer_Data").doc(userEmail).get();
return admin.firestore().collection("Customer_Data").doc({userEmail}).get().then(queryResult => {
const tokenId = queryResult.data().tokenId;
notificationContent = {
notification: {
title: title,
body: message,
}
}
return admin.messaging().sendToDevice(tokenId , notificationContent);
})
});