如何在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()
”?
答案 0 :(得分:0)
由于活动数据已保存在内存中,因此只要侦听器处于活动状态,您的代码就会将最新数据的快照保存在内存中的another/data/path
。由于您从不会在代码中调用off
,因此,只要运行该函数的容器处于活动状态,就不仅要在此函数处于活动状态的时间内。
即使该容器中有其他Cloud Functions,并且这些其他功能不需要此数据,它仍将使用内存。
如果这是您想要的行为,那么这是一种有效的方法。我只建议进行成本/收益分析,因为我希望这在某些时候可能会导致难以理解的行为。