2017-07-22 18 views
0

AngularJSを使用して、特定の親ツリーのFirebaseデータベースの値を取得しています。私はこの親の価値も得たいと思っています。AngularJSを持つFirebaseデータベースの親と子の両方の値を取得する

私のデータベース構造:

enter image description here

はこれまでのところ、私のコードは、指定したユーザーIDの下に名前と各tripIDの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

ない私が正しく理解してください、しかし、あなたが旅行キーのリストをしたい場合:

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クラスは」doesnのため、最後のビットが、残念ながら、一時的な変数を必要としますが、一度の旅行を超えるだけループあなたが必要なすべてのデータを取得することができますtはmap()関数を持っています。

+0

答えをありがとう。 Object.keys()を使用した2番目のコードスニペットでは、私の値はtripKey、tripName、tripPhotoUrlに格納されていますか?上記の私のコードでは、htmlでng-repeat = "data in repeatData"を設定し、出力を表示するために{{data.data}}と{{data.value}}を使用しました。 – marcvander

+1

私はより明確になることを望むために、私のコードでよりわかりやすい名前を使用しました。あなたのコードでは '{{data.tripKey}}'を使用してトリップキーを取得し、旅行の名前には '{{data.tripName}}'を、旅行の写真には '{{data.tripPhotoUrl}}' URL。 –

+0

これは私の考えですが、HTMLコードにこれを挿入すると、コードを実行するときに何も表示されません。ここで

{{data.tripName}}
コードとjsfiddleです:https://jsfiddle.net/vnm1fnjh/ – marcvander

関連する問題