使用云函数时无法更改 Firebase 实时数据库中的数据



我想在每天上午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文件中的云函数触发器。这意味着你不能像你试图做的那样,从云函数内部动态创建触发器

动态调度的常见方法有:

  1. 有一个周期性运行的云函数,然后执行过去一段时间内的任务
  2. 用云任务动态调度云函数,正如Doug在他的博客文章《如何调度云函数在未来用云任务运行》(构建Firestore文档TTL(中所描述的那样

但在您的情况下,为什么您甚至需要onWrite触发器?你不能直接导入Admin SDK,用户读取所有用户,然后删除他们吗?

相关内容

  • 没有找到相关文章

最新更新