使用AngularJS获取Firebase数据库中的父值和子值

时间:2017-07-22 11:42:13

标签: javascript angularjs firebase-realtime-database

我正在使用一些AngularJS在指定的父树下检索Firebase数据库中的值。我想得到这个父母的价值。

我的数据库结构:

enter image description here

到目前为止,我的代码在指定的UserID下获取每个tripID的Name和PhotoUrl。但我想获得TripID值以及Name和PhotoUrl。问题是TripID值不在子树中。我怎样才能找回它?

我的JS看起来像这样:

    var app = angular.module('test', []);

app.controller('MainCtrl', function($scope) {
    var database = firebase.database();
    database.ref(`trips/${userid}/trips`).once('value') 

.then(photosSnap => {
    var photosObj = photosSnap.val();
    var tripName = Object.keys(photosObj).map(key => photosObj[key].name);
    var tripPhotoUrl = Object.keys(photosObj).map(key => photosObj[key].photourl);

   $scope.repeatData = tripName.map(function (value, index) {
      return {
        data: value,
        value: tripPhotoUrl[index]
}
});

1 个答案:

答案 0 :(得分:1)

不确定我是否理解正确,但如果你想要一个旅行钥匙列表:

var tripKeys = Object.keys(photosObj);

但是将单独的值提取到数组然后重新组合对我来说过于复杂。您可以循环遍历一次以获取所需的所有数据:

var trips = photosSnap.val();
$scope.repeatData = Object.keys(trips).map((key) => {
    tripKey: key,
    tripName: trips[key].name,
    tripPhotoUrl: trips[key].photourl
});

或者不需要Object.keys()

var trips = [];
photosSnap.forEach((trip) => {
  trips.push({
    tripKey: trip.key,
    tripName: trip.val().name,
    tripPhotoUrl: trip.val().photourl
  });
});
$scope.repeatData = trips;

最后一点不幸需要一个临时变量,因为Firebase的DataSnapshot类没有map()函数。