我想在每天上午12:00重置Firebase实时数据库中的特定值。我正在使用Firebase云函数来执行此操作。这是我的代码:
exports.dailyReset = functions.pubsub.schedule('0 0 * * *').onRun((context) => {
exports.resetValue = functions.database.ref('/users/{userId}')
.onWrite((change, context) => {
var ref = change.data.ref;
ref.update({
"daily": 0
});
return ref.update({"daily": 0});
});
return null;
});
在测试脚本时,它不起作用。它并没有重置我的Firebase实时数据库中的值。有人能告诉我如何解决这个问题吗?
无法使用函数SDK写入数据库。functions
只能用于建立在触发事件发生时运行的触发器。
换句话说,functions.database.ref('/users/{userId}').onWrite()
根本不会写任何东西。
如果您想从nodejs程序写入实时数据库,您应该使用Firebase Admin SDK来写入数据。
运行firebase deploy
时,必须知道并修复index.js
文件中的云函数触发器。这意味着你不能像你试图做的那样,从云函数内部动态创建触发器
动态调度的常见方法有:
- 有一个周期性运行的云函数,然后执行过去一段时间内的任务
- 用云任务动态调度云函数,正如Doug在他的博客文章《如何调度云函数在未来用云任务运行》(构建Firestore文档TTL(中所描述的那样
但在您的情况下,为什么您甚至需要onWrite
触发器?你不能直接导入Admin SDK,用户读取所有用户,然后删除他们吗?