【问题标题】:Cloud Function keeps running云功能继续运行
【发布时间】:2017-09-20 01:10:59
【问题描述】:

我们有一个 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();
       })
    });
});

【问题讨论】:

    标签: firebase firebase-realtime-database google-cloud-functions


    【解决方案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");
            });
        });
    });
    

    【讨论】:

      猜你喜欢
      • 2017-04-29
      • 1970-01-01
      • 2019-10-15
      • 1970-01-01
      • 2021-08-19
      • 1970-01-01
      • 1970-01-01
      • 2012-12-08
      • 1970-01-01
      相关资源
      最近更新 更多