Вы получаете Error: 4 DEADLINE_EXCEEDED
. Выполнение быстрого поиска в сети показывает, что это происходит, когда «ваши запросы занимают слишком много времени».
Однако, что касается пояснений, которые вы дали вВ комментариях выше не похоже, что вы имеете дело с большими объемами.
Что произойдет, если вы вернете обещание, возвращенное асинхронным методом get()
, следующим образом.
exports.bulkMsg = functions.firestore
.document('/bulkMsgs/{bulkMsgsId}').onUpdate((snap, context) => {
const newValue = snap.after.data();
const regDate = newValue.regDate;
return admin.firestore().collection('users').get()
.then(onUser => {
onUser.forEach(oneUser => {
if (oneUser.data().notification === "true") {
console.log(oneUser.id);
}
});
return null;
}).catch(err => {
console.log('Error getting user', err);
return null;
});
});
Фактически, вы ДОЛЖНЫ вернуть Обещание или значение в фоновой облачной функции. Я бы посоветовал вам посмотреть 3 видео о «Обещаниях JavaScript» из серии видеороликов Firebase: https://firebase.google.com/docs/functions/video-series/, которые объясняют этот ключевой момент.