[英]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.