BeingSuman BeingSuman - 2 months ago 20
Javascript Question

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?

Answer

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);
        });
    });