我试图将Firebase快照的结果作为数组返回,以便可以通过它们ng-repeat(默认情况下返回对象)最后一行是我尝试在数组中设置对象并将它们设置为作用域的地方重复一遍。但是我似乎对将值设置为数组的基本概念感到困惑:/任何帮助都会很棒。

const businessKey = '-KQ1hFH0qrvKSrymmn9d';
const rootRef = firebase.database().ref();
const discoverRef = rootRef.child('discover');
const businessRef = rootRef.child('businesses');


function getDiscoverBarContent(key, cb) {
    discoverRef.child(key).on('child_added', snap => {
        let businesRef = businessRef.child(snap.key);
        businesRef.once('value', cb);
    });
}

getDiscoverBarContent(businessKey, snap => {
    snap.forEach((child) => {
         var item = {};
         item._key = snap.val();
         array.push(item);
         /*$scope.discover = array*/
      })
});

最佳答案

尝试angularfire

Angularfire是Firebase的便捷帮助器,为您提供了一些用于构建角度应用程序的有用工具。它包括3个主要服务。只需在每个控制器中注入所需的一个或多个即可。确保Firebase已首先初始化:

$firebaseAuth
$firebaseObject
$firebaseArray

这是使用$firebaseArray的方法:

const businessKey = '-KQ1hFH0qrvKSrymmn9d';
const rootRef = firebase.database().ref();
const discoverRef = rootRef.child('discover');
const businessRef = rootRef.child('businesses');


function getDiscoverBarContent(key, cb) {
    let myArray = $firebaseArray(discoverRef.child(key));
    myArray.$loaded().then(() => { cb(a) });
}

getDiscoverBarContent(businessKey, data => {
    // ctrl.property = data
    // $scope.property = data;
});


如果我的语法有误,对不起。我仍然使用经典的JS语法,无论es5 / es6叫什么,都没有。

angularfire的文档:https://github.com/firebase/angularfire/blob/master/docs/reference.md

无关,但是如果您需要轻松地以角度分页,请省去麻烦,并使用以下库:https://github.com/deltaepsilon/firebase-paginator

10-08 06:21