I am writing a Firebase Cloud Function in node.JS that reads user data from Firebase Firestore. I am unable to push the token values into the token array and return all tokens at the end of the function. My code is as follows:
function getTokens(subscribers) {
return new Promise(async function (resolve, reject) {
const tokenArray = [];
subscribers.forEach(async (subscriber) => {
await firestore
.collection('users')
.doc(subscriber)
.get()
.then((user) => {
console.log("Getting user data for user: ", user);
const tokens = user.data().tokens;
if (tokens) {
tokens.forEach((token) => {
console.log("Adding token to token array"); // data is available here but does not push into tokenArray
tokenArray.push(token);
});
}
}).catch((error) => { console.error(error); reject(error); });
});
console.log("Token Array -- Final: ", tokenArray);
resolve(tokenArray);
});
};