簡體   English   中英

Cloud Firestore刪除功能

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM