Javascript Firebase数据库批处理

Javascript Firebase数据库批处理,javascript,caching,firebase,firebase-realtime-database,Javascript,Caching,Firebase,Firebase Realtime Database,我想知道Firebase数据库有多智能,如果我同步调用它们,它是否会将多个数据库请求批处理在一起 例如,如果我在下面发出两个相同的请求,它会只向后端发送最后一个请求,还是同时发送这两个请求 firebase.database().ref('test').set(1); firebase.database().ref('test').set(2); 另外,如果我同步读取同一位置多次,它会多次向后端发送请求,还是会理解读取了同一位置 firebase.database().ref('test').

我想知道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 => {});
这里是消防队

无法将这些写入合并在一起,因为您可能有验证规则(仅在服务器上强制执行),这些规则仅在第一次写入后接受第二次写入。每个写入请求都将发送到数据库。因此,在第一个代码段中,将发送两个写操作

Firebase将仅检索其正在侦听的每个位置的数据一次。因此,如果您保持一个活动侦听器,则该位置上的第二个侦听器将从缓存中获取现有数据

但是在您的场景中,您没有保持活动的侦听器,因为您正在使用
once()
。当您使用
once()
时,一旦客户端接收到读取结果,侦听器就会被删除

当您将这两行紧跟在一起执行时,它们仍可能得到相同的读取。但是如果这些行之间的距离更远,那么第一个侦听器已经被删除,因此数据已经从缓存中删除