2017-09-19 113 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"); 
     }); 
    }); 
});