繁体   English   中英

从PubSub触发的云功能写入Firebase数据库

[英]Write to firebase database from cloud function triggered by PubSub

我正在尝试使用每日触发器来更改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 Promise

通过返回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);
  });
});

在exports.daily_job。之前的某个位置插入此命令。

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

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

admin.initializeApp({


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

但是由于某种原因,这导致了问题。 我用一个简单的开关

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

这似乎已经解决了该问题,并且推送通知仍在起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM