如何从 Firebase 中的 snapshot.val() 或 snapshot.exportVal() 获取属性/值?

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

我能够以 snapshot 的形式获取我感兴趣的对象,如此 CodePen

所示

以下是代码片段:

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

这是Firebase dataset正在使用的。

当我搜索作者:gracehop 时,我得到了正确的快照,但是我无法访问其中的 title 等属性。 val.titleexportVal.title 都给出 undefined 作为输出。

如何从快照中获取感兴趣的属性?

查询 returns 包含匹配 children 的快照,它是包含您感兴趣的属性的 children。

您可以使用快照的 forEach 方法枚举 children:

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