3

Currently, Firebase supports multipath data updates for a flat data layout. However when it comes to fetching data, is it possible to use a similar method to multipath fetch data from multiple locations in Firebase?

For example I need to join some data together and my current code looks like this:

ref.child('data_1/').once('value', function (snapshot) {
    var test_string_1 = snapshot.val();

    ref.child('data_2/').once('value', function (snapshot) {
        var test_string_2 = snapshot.val();

        //...etc 
    });
});

When it comes to having to fetch data from multiple nodes, this nested approach goes quite deep. So I'd like to know if there is a better and faster method, like multipath fetching, to get data from multiple locations.

Inzamam Malik
  • 3,238
  • 3
  • 29
  • 61
user2028856
  • 3,063
  • 8
  • 44
  • 71

1 Answers1

6

If the paths/refs are not dependent on each other, you can retrieve them like this:

var test_1 = ref.child('data_1/');
var test_2 = ref.child('data_2/');
Promise.all([
    test_1.once('value'),
    test_2.once('value')
]).then(function(snapshots) {
    var test_string_1 = snapshots[0].val();
    var test_string_2 = snapshots[1].val();
});

See:

Frank van Puffelen
  • 565,676
  • 79
  • 828
  • 807
  • Will I be able to dynamically pass a whole array of paths/refs to this method and fetch them in bulk? – user2028856 Apr 21 '17 at 01:42
  • See http://stackoverflow.com/questions/35931526/speed-up-fetching-posts-for-my-social-network-app-by-using-query-instead-of-obse/35932786#35932786 – Frank van Puffelen Apr 21 '17 at 03:35
  • I notice that when fetching a thousand records using this method, the load time is quite slow, up to 30 seconds of loading time sometimes for all data to be loaded. Is this normal? – user2028856 Apr 23 '17 at 10:45