我想知道Firebase数据库有多聪明,如果我同步调用它们是否将多个数据库请求批处理在一起?
例如,如果我在下面发出两个相同的请求,它会仅向后端发送最后一个请求,还是两者都发送?
firebase.database().ref('test').set(1);
firebase.database().ref('test').set(2);
另外,如果我在同一位置多次同步读取,它会多次将请求发送到后端,还是会理解读取相同的位置?
firebase.database().ref('test').once('value', snap => {});
firebase.database().ref('test').once('value', snap => {});
另外,听一些路径的开销是多少?在内存和带宽方面。为了不影响用户体验,每个用户可以使用的最大侦听器数是多少?
firebase.database().ref('...').on('value', snap => {});
答案 0 :(得分:0)
firebaser here
这些写入无法合并在一起,因为您可能具有验证规则(仅在服务器上强制执行),只有在第一次写入时才接受第二次写入每次写入请求都将被发送到数据库。因此,在您的第一个代码段中,将发送两个写操作。
Firebase只会检索其正在侦听的每个位置的数据。因此,如果您保留一个活动侦听器,该位置上的第二个侦听器将从缓存中获取现有数据。
但在您的情况下,您不能保持积极的倾听者,因为您正在使用once()
。使用once()
时,只要客户端收到读取结果,就会删除侦听器。
当您紧接着执行两行时,它们仍然可能会获得相同的读取。但是如果这些行更远,第一个侦听器将被删除,因此数据已经从缓存中删除了。