Firebase功能-数据库缓存?

时间:2018-07-28 07:11:42

标签: node.js firebase firebase-realtime-database google-cloud-functions

如何在firebase中缓存数据库数据?

基于this SO answer,firebase会在有活动侦听器的情况下缓存数据。

考虑以下示例:

exports.myTrigger = functions.database.ref("some/data/path").onWrite((data, context) => {
    var dbRootRef = data.after.ref.root;
    dbRootRef.child("another/data/path").on("value", function(){});
    return dbRootRef.child("another/data/path").once("value").then(function(snap){/*process data*/})
}

这将缓存数据,但问题是-这种对服务器端有效的方法吗?我是否应该在某个时间点打电话给.off(),以使它不会产生任何问题,因为此呼叫可以迅速扩展,从而产生大量的“ .on()”听众?还是可以无限期地保留“ on()”?

1 个答案:

答案 0 :(得分:0)

由于活动数据已保存在内存中,因此只要侦听器处于活动状态,您的代码就会将最新数据的快照保存在内存中的another/data/path。由于您从不会在代码中调用off,因此,只要运行该函数的容器处于活动状态,就不仅要在此函数处于活动状态的时间内。

即使该容器中有其他Cloud Functions,并且这些其他功能不需要此数据,它仍将使用内存。

如果这是您想要的行为,那么这是一种有效的方法。我只建议进行成本/收益分析,因为我希望这在某些时候可能会导致难以理解的行为。

相关问题