2017-09-19 1 views
0

Nous avons une fonction Firebase qui supprime les éléments après 24 heures. La fonction fonctionne, cependant, la page Web liée à la fonction continue de fonctionner, donc je suppose que la fonction est dans une boucle sans fin. Est-il possible de résoudre ce problème?La fonction Cloud continue à fonctionner

Ceci est notre fonction:

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(); 
     }) 
    }); 
}); 

Répondre

1

Vous devez envoyer une réponse au client afin de mettre fin à une fonction de type HTTPS sans expiration. Vous devriez le faire seulement après que le travail que vous faites dans la fonction est terminé. Cela signifie que vous devrez apprendre à utiliser les promesses.

Vous aurez besoin de collecter toutes les promesses retournées par c.ref.remove() et attendez tous pour terminer avant de terminer la fonction avec une réponse au client:

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"); 
     }); 
    }); 
});