如何在Firebase中的预定任务内执行NumChildren()?

时间:2019-06-15 03:17:38

标签: node.js firebase firebase-realtime-database google-cloud-platform google-cloud-functions

我正在尝试每5分钟计算孩子的数量。 我一直在尝试编写一个每X分钟运行一次的代码,每次运行它将计算子代数。

我已经将Firebase文档中的代码修补在一起以用于计划的功能和快照,但是我可能缺少一些东西。

exports.scheduledFunction = functions.pubsub.schedule('every 5 
minutes').onRun((context) => {
  var ref = firebase.database().ref("location/");
  ref.once("value")
   .then(function(snapshot) {
     var a = snapshot.numChildren(); // 1 ("name")
    });
});

尝试部署到Firebase云时出现控制台错误:

8:3错误预期的catch()或返回promise / catch-or-return

9:11警告意外的函数表达式preferred-arrow-callback

9:11错误每个then()应该返回一个值或抛出Promise / always-return

1 个答案:

答案 0 :(得分:1)

由于once()调用是从Firebase异步加载数据的,因此您需要在代码完成时告诉Cloud Functions。为此,您可以从顶级代码中返回一个Promise,然后从其中返回一个值。

是这样的:

exports.scheduledFunction = functions.pubsub.schedule('every 5 
minutes').onRun((context) => {
  var ref = firebase.database().ref("location/");
  return ref.once("value")
   .then(function(snapshot) {
     var a = snapshot.numChildren(); // 1 ("name")
     return true;
    });
});

另请参阅: