【发布时间】:2019-07-29 00:52:38
【问题描述】:
全部,
我正在使用 Firestore 作为后端,并正在尝试编写一个将在每个月的第一天运行的云函数。此函数将需要删除该函数运行日期之前的每个数据库条目。我能够完成以下功能,但它不会删除任何条目。也许有人可以帮我解决这个问题。
export const deleteOldPrayerRequests = functions.pubsub.schedule('0 0 1 * *').onRun(async (context) => {
const date = new Date();
console.log('---> Timestamp', context.timestamp);
console.log('---> Date Today', date);
console.log('---> Date Today', date.setDate(date.getDate()));
console.log('---> Date 14 days ago', date.setDate(date.getDate() - 14));
const snapshot = await admin.firestore().collection('prayerRequests').get();
snapshot.docs.forEach(doc => {
const ts = doc.get('dateSubmitted');
if (date.setDate(date.getDate() - 14) >= ts.toMillis()) {
console.log(doc.data());
doc.ref.delete().then((data: any) => {
console.log(data);
}).catch((error: any) => {
console.log(error);
});
}
});
});
【问题讨论】:
-
你需要返回一个promise,当所有异步工作完成时,它会解析,否则Cloud Function会提前终止它。
-
@Doug Stevenson 你能把它作为答案发布吗?通过你得到的支持,我相信这对 OP 有帮助。
标签: javascript firebase google-cloud-firestore google-cloud-functions