У меня возникли некоторые проблемы с моим скриптом node.js из моих облачных функций. Я довольно новичок в JavaScript и использую node.js. Мои облачные функции используются для моего приложения для Android, и я делаю https.onCall с прикрепленными к нему данными. Я хочу, чтобы мой сценарий использовал использованные данные, которые представляют собой UID для удаления документа из моей базы данных Firestore и в документе поле содержит массив UID пользователей, которые я хочу получить до удаления документа, чтобы я мог отправить уведомление каждому пользователю о его удалении. Вот мой код, он запускается в журналах, когда я тестирую его, но он не работает полностью.
exports.deleteSession = functions.https.onCall((data) => {
const DB = admin.firestore();
console.log("function Triggered");
const UID = data.text;
console.log(`got the text ${UID}`);
const sessionOb = DB.collection('Sessions').doc(`${UID}`).get();
console.log(`got session object ${sessionOb.data().tutorUID}`);
var students = [];
var TUID = sessionOb.data().tutorUID;
students = sessionOb.data().students;
var array_uid = [];
for(var key in students){
array_uid.push(key);
}
var tokens = [];
for(var id in array_uid){
var userOB = DB.collection('Users').doc(`${id}`).get();
tokens.push(userOB.data().tokenID);
}
console.log("functions in middle");
var tutorOB = DB.collection('Users').doc(`${TUID}`).get();
var tutorName = tutorOB.data().name;
var profile = tutorOB.data().profileImage;
const payload = {
notification: {
title: `${tutorName} has canceled their Session`,
body: `${session.subject} tutoring is Canceled`,
icon: profile
}
};
var deleteDoc = DB.collection('Sessions').doc(`${UID}`).delete();
console.log("document deleted");
return admin.messaging().sendToDevice(tokens, payload).then(function(response) {
console.log("Successfully sent message:", response);
})
.catch(function(error) {
console.log("Error sending message:", error);
});
});