我正在分析我的 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
的结果
如何在更新数据时摆脱下载或减少使用,因为我只需要上传它?
最佳答案
我认为这在 firebase cloudfunction 触发器中是不可能的。
.onWrite((data, context)
有一个 data
字段,它是完整的 DataSnapshot
。
并且无法配置不获取其 val
。
不过,您可以采取两件事来帮助降低数据成本:
- 观看较小的一组以进行触发。例如
functions.database.ref("some/data/path")
与("some")
。 - 使用更具体的钩子(Hook)。即
onCreate()
和onUpdate()
与onWrite()
。
关于javascript - Firebase "update"操作下载数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51564823/