HP.
HP.

Reputation: 19896

Firebase child() vs. Angularfire $firebaseObject

I am trying to understand WHEN Firebase actually loads the data to the client vs. doing "lazy load" (only download the data when it's needed). The reason is that I am saving images (base64) in Firebase (please don't ask why as it's only few hundred MBs). So there are two choices:

  // With typical Firebase
  var imagesRef = Ref.child('images');

  // With Angularfire
  var imagesObj = $firebaseObject(Ref.child('images'));

Ref is just a reference to my Firebase URL.

I know with Angularfire, there is $loaded() which makes me think Angularfire actually loads all the data AT ONCE and makes it available when you call $firebaseObject() right away. Is it correct?

As for using child(), I don't see any load() event to catch based on the documentation. Maybe I missed it. But does it load all data from the server to client?

If I have like 500MB of images, I definitely don't want this load-all-at-once happening.

Upvotes: 1

Views: 1037

Answers (1)

nicolas
nicolas

Reputation: 920

firebase retrieve the data when you call .on on a ref

As not widely know, all the data are retrieved in one piece (wether you call .on 'value' or .on 'child_added'), so you better paginate your result using orderByFirst / Last, or using firebase util

What angular fire does when you instanciate a firebaseObject / array is calling on 'value' / 'child_added' from within the constructor function of the instance, so yes , the data are retrieved almost instantly (but in a defer hence the $loaded() function).

Check out the source code of the Object manager and the constructor of $firebaseObject for instance, it's pretty clear

Upvotes: 1

Related Questions