2017-09-19 48 views
0

我們有一個Firebase功能,可以在24小時後刪除項目。該功能的作品,但是,鏈接到該功能的網頁保持運行,所以我猜這個功能是無止境的循環。有沒有辦法解決這個問題?雲端功能繼續運行

這是我們的功能:

exports.delete = functions.https.onRequest((req, res) => { 
const currentTime = new Date().getTime(); 
const dayAgo = currentTime - 86400000; 

ref.child('testlijst') 
    .orderByChild('tijd') 
    .endAt(dayAgo) 
    .once('value') 
    .then(snap => { 
     snap.forEach(c => { 
      c.ref.remove(); 
     }) 
    }); 
}); 

回答

1

您需要發送給客戶端的響應,以終止HTTPS類型功能不會超時。只有在完成該功能的工作後,才應該這樣做。這意味着你需要學習如何使用promise。

您將需要收集)由c.ref.remove(返回的所有承諾,並等待他們都向客戶端的響應終止函數之前完成:

ref.child('testlijst') 
    .orderByChild('tijd') 
    .endAt(dayAgo) 
    .once('value') 
    .then(snap => { 
     const promises = []; 
     snap.forEach(c => { 
      const p = c.ref.remove(); 
      promises.push(p); 
     }) 
     Promise.all(promises).then(result => { 
      res.send("done"); 
     }); 
    }); 
});