繁体   English   中英

使用 Cloud Functions 时无法更改 Firebase 实时数据库中的数据

[英]Can't change data in Firebase Realtime Database when using Cloud Functions

我想每天凌晨 12:00 重置我的 Firebase 实时数据库中的特定值。 我正在使用 Firebase Cloud Functions 来执行此操作。 这是我拥有的代码:

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文件中的 Cloud Functions 触发器。 这意味着您不能像您尝试做的那样从 Cloud Functions 内部动态创建触发器。

动态调度的常用方法有:

  1. 拥有一个定期运行的 Cloud Function,然后执行过去一段时间内的任务。
  2. 正如 Doug 在他的博客文章How to schedule a Cloud Function 中描述的那样,使用 Cloud Tasks 动态调度 Cloud Functions 以在未来使用 Cloud Tasks 运行(以构建 Firestore 文档 TTL)

但就您而言,为什么您甚至需要onWrite触发器? 您不能只导入 Admin SDK用户来读取所有用户,然后删除它们吗?

暂无
暂无

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

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