[英]Cloud Firestore delete function
所有,
我將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);
});
}
});
});
這是Firestore官方文檔中提供的用於刪除文檔的示例代碼段。
db.collection("cities").doc("DC").delete().then(function() {
console.log("Document successfully deleted!");
}).catch(function(error) {
console.error("Error removing document: ", error);
});
參考閱讀更多
您需要返回一個承諾,該承諾將在所有異步工作完成后解決,否則Cloud Function將盡早終止它。 –道格·史蒂文森
我有一個類似的問題。 為了使刪除生效,需要使用回調函數。 隨着Angular更新,處理它的方法似乎一直在變化。 這是我使用Angular 8(最新的一切)的解決方案:
this.db.collection('prayerRequests')
.get()
.subscribe((snapshot) =>{
snapshot.forEach(doc => {
this.db.collection('dateSubmitted').doc(doc.id).delete()
});
})
希望這對您有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.