javascript - Firebase "update"操作下载数据?

标签 javascript firebase firebase-realtime-database google-cloud-functions

我正在分析我的 firebase 数据库中的“下载泄漏”(我正在使用 JavaScript SDK/firebase 函数 Node.js),最后将范围缩小到“更新”函数,该函数令人惊讶地导致了数据下载(这影响了我的计费)案例非常明显 - 大约 50% 的账单来自此泄漏):

Firebase 函数index.js:

exports.myTrigger = functions.database.ref("some/data/path").onWrite((data, context) => {
    var dbRootRef = data.after.ref.root;
    return dbRootRef.child("/user/gCapeUausrUSDRqZH8tPzcrqnF42/wr").update({field1:"val1", field2:"val2"})
}

此函数在“/user/gCapeUausrUSDRqZH8tPzcrqnF42/wr”节点生成下载

如果我将路径更改为如下所示:

exports.myTrigger = functions.database.ref("some/data/path").onWrite((data, context) => {
    var dbRootRef = data.after.ref.root;
    return dbRootRef.child("/user/gCapeUausrUSDRqZH8tPzcrqnF42").update({"wr/field1":"val1", "wr/field2":"val2"})
}

它在“/user/gCapeUausrUSDRqZH8tPzcrqnF42”节点生成下载。

这是 firebase database:profile 的结果

enter image description here

如何在更新数据时摆脱下载或减少使用,因为我只需要上传它?

最佳答案

我认为这在 firebase cloudfunction 触发器中是不可能的。

.onWrite((data, context) 有一个 data 字段,它是完整的 DataSnapshot。 并且无法配置不获取其 val

不过,您可以采取两件事来帮助降低数据成本:

  1. 观看较小的一组以进行触发。例如functions.database.ref("some/data/path")("some")
  2. 使用更具体的钩子(Hook)。即 onCreate()onUpdate()onWrite()

关于javascript - Firebase "update"操作下载数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51564823/

相关文章:

javascript - 如何在 PHP 中使用 document.getElementbyId

javascript - 第一次尝试firebase云功能

php - 使用带有身份验证的 PHP 进行 Firebase REST 访问

javascript - 在检索数据期间对对象进行分组

javascript - React Native 和 firebase,注册时的实时数据库

Javascript 函数返回整个函数而不是值

javascript - For 循环覆盖 HTML 中的文本

javascript - AngularJS 选择框在模型更改时不更新

firebase - 如何设置 pubsub 以便 firebase 可以通过云函数 pubsub 触发器接收?

javascript - 云函数未在实时数据库上执行 ref.once