BeingSuman
BeingSuman

Reputation: 3323

How to get properties / values from snapshot.val() or snapshot.exportVal() in Firebase?

I was able to fetch my interested object as snapshot as shown in this CodePen

Following is the code snippet :

$scope.post = {};
        var postsRef = new Firebase('https://docs-examples.firebaseio.com/web/saving-data/fireblog/posts');

        $scope.searchPost = function () {
            console.log('searched for author : ' + $scope.post.authorName);

            postsRef.orderByChild('author')
                .equalTo($scope.post.authorName)
                .once('value', function (snapshot) {
                    var val = snapshot.val();
                    console.log("Searched Post is : ");
                    console.log(val);
                    console.log("(From Val) Title is : " + val.title);

                    var exportVal = snapshot.exportVal();
                    console.log("Export Value is : ");
                    console.log(exportVal);
                    console.log("(From Export Val) Title is : " + exportVal.title);
                });
        }

This is the Firebase dataset am using.

When I search for author: gracehop, I get the correct snapshot but, I'm not able to access properties like title inside that. Both val.title & exportVal.title are giving undefined as output.

How do I get the interested properties from snapshot?

Upvotes: 1

Views: 13146

Answers (1)

cartant
cartant

Reputation: 58400

The query returns a snapshot containing the matching children and it is the children that contain the properties in which you are interested.

You can enumerate the children using the snapshot's forEach method:

postsRef.orderByChild('author')
    .equalTo($scope.post.authorName)
    .once('value', function (snapshot) {

        snapshot.forEach(function (childSnapshot) {

            var value = childSnapshot.val();
            console.log("Title is : " + value.title);
        });
    });

Upvotes: 5

Related Questions