从pubsub触发的云功能中写入firebase数据库



我正在尝试使用每日触发器来更改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-90ms中完成。但是我的数据库永远不会更改。删除语句从未出现。

任何帮助将非常感谢!

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

admin.initializeApp({

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

,但由于某种原因,这引起了问题。我用简单的

切换了
admin.initializeApp(functions.config().firebase);

这似乎已解决了问题,推动通知仍在工作。

文档解释说,执行异步处理的函数必须返回JavaScript Promise:

解决通过返回A执行异步处理的函数 JavaScript Promise

将代码更改为:

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

相关内容

  • 没有找到相关文章

最新更新