2017-10-20 85 views
0

火力标准状态下256 MB用于最大读取,因此....使用limitToLast添加/推送到firebase ref?

是否可以推limitToLast

var ref = firebase.database().ref(); 

ref.child("projects").limitToLast(1).push({ 
    username: name, 
    email: email, 
    profile_picture : imageUrl 
    }); 

感谢

+0

推是不是一个阅读,但它是一个写? –

+0

啊所以'ref.child(“projects”).limitToLast(1)'不会先读取再写入。它只是说一个参考? Angularfire困惑了我。 'var projects = ref.child(“projects”)。limitToLast(1);' 'var projectsArray = $ firebaseArray(projects);' 'projectsArray'现在有一个数组可读? 'projectsArray。$ add({foo:“bar”});' – Shug1001

+0

是啊afaik它只是一个ref,你根本不需要limitToLast,只是推。如果你想阅读列表,你必须使用'.on('value')'或'.once('value')' –

回答

0

当从数据库中读取,查询应该被限制,过滤或以其他方式限制,它没有击中256MB的限制,或检索过多的数据。写入数据库时​​,只需确保单个写请求的大小不超过256MB。

使用firebase.database().ref().child()会生成Reference到数据库中的特定位置,但不执行任何数据库或网络操作。这可以用来读/写数据库中的数据。

调用limitToLast()(或任何其他过滤方法)在Reference将产生一个Query来代替。同样,Query本身不执行任何数据库或网络操作。但是,Query只能被指示执行操作。呼吁一个ReferenceQuery具体方法时

网络操作仅执行:在ReferenceQuery调用这些on()once()或变化时进行

  • 读操作。
  • 写操作上只有Reference调用set()push()remove()update()或变化的这些时候进行。

总之,使用push()写入数据库不会首先读取数据,因此您不必担心读取256MB的读取限制。最后,由于limitToLast()返回Query,因此您无法在此处致电push()