【问题标题】:Write to firebase database from cloud function triggered by PubSub从 PubSub 触发的云功能写入 firebase 数据库
【发布时间】:2017-09-28 16:20:23
【问题描述】:

我正在尝试使用每日触发器来更改我的 Firebase 数据库中的信息。我有许多其他可以正常工作的云功能,但我似乎无法使用此功能来更改数据库。

const admin = require('firebase-admin');
exports.daily_job = functions.pubsub.topic('daily-tick').onPublish((event) => {
  console.log("This job is run every day!");
  const databaseRef = admin.database().ref('/accountActions/dailyDeletion');
  databaseRef.child('delete').set("Data has been deleted!");
  return "End of database clearing";
});

这是我一直在测试以查看触发器是否正常工作的代码。在我的控制台中,它显示函数启动,控制台语句被记录,执行在 40-90 毫秒内完成。但我的数据库从未改变。删除语句永远不会出现。

非常感谢任何帮助!

【问题讨论】:

  • 看来我已经正确初始化了应用程序。我尝试按照您建议的方式更改我的代码,并且该功能现在超时。知道会发生什么吗?

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


【解决方案1】:

我找到了问题的答案。我已经根据 Firebase 关于推送通知的文档初始化了应用程序:

admin.initializeApp({


  credential: admin.credential.cert({
    projectId: {projectId},
    clientEmail: {email},
    privateKey: {private key}
  }),
 databaseURL: {databaseURL}
 });

但由于某种原因,这引起了问题。我用一个简单的方法把它关掉了

admin.initializeApp(functions.config().firebase);

这似乎已经解决了问题,并且推送通知仍然有效。

【讨论】:

    【解决方案2】:

    The documentation 说明执行异步处理的函数必须返回一个JavaScript Promise

    通过返回 a 来解析执行异步处理的函数 JavaScript 承诺

    将您的代码更改为:

    exports.daily_job = functions.pubsub.topic('daily-tick').onPublish((event) => {
      console.log("This job is run every day!");
      const databaseRef = admin.database().ref('/accountActions/dailyDeletion');
      return databaseRef.child('delete').set("Data has been deleted!").then(() => {
        console.log('End of database clearing');
      }).catch(error => {
        console.error('Database clearing failed: ', error);
      });
    });
    

    【讨论】:

    • 奇怪的是,我仍然超时
    • @RossHarding:云函数日志输出是否显示“数据库清除结束”?
    • @RossHarding:日志仅显示“此作业每天都在运行!”然后超时?
    • 是的,我看到的确切日志是“函数执行开始”、“该作业每天运行”和“函数执行耗时 60002 毫秒,状态为“超时””
    【解决方案3】:

    在exports.daily_job..之前的某处插入此命令。

    admin.initializeApp(functions.config().firebase);
    

    【讨论】:

      猜你喜欢
      • 2021-09-07
      • 2018-12-24
      • 1970-01-01
      • 2021-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多