Вы вызываете параллельно несколько асинхронных задач (т. Е. С помощью метода delete()
), и вы должны отправлять ответ только после завершения всех этих задач.
Поскольку *Метод 1006 * возвращает Обещание, вам необходимо использовать Promise.all()
следующим образом:
....
exports.removeOldEvents = functions.https.onRequest((req, res) => {
db = admin.firestore();
db.collection('Events')
.where('timeStamp', '<', new Date())
.get()
.then(querySnapshot => {
var promises = [];
querySnapshot.forEach(doc => {
promises.push(
db
.collection('Events')
.doc(doc.id)
.delete()
);
});
return Promise.all(promises);
})
.then(() => {
console.log('Successful');
res.send('Successful');
})
.catch(error => {
console.log('Error ', error);
res.status(500).send('Error ', error);
});
});
Обратите внимание, что при вызове этой функции облака HTTPS значение new Date().getTime()
будетбыть сейчас.Поэтому я предполагаю, что у вас есть некоторые документы со значением timeStamp
, которые находятся в будущем, или вы, скорее всего, удалите всю коллекцию!
Также обратите внимание, что если вы уверены, что ваш запросвернет менее 500 документов, вы можете использовать пакетную запись .