我正在使用一些AngularJS在指定的父树下检索Firebase数据库中的值。我想得到这个父母的价值。
我的数据库结构:
到目前为止,我的代码在指定的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]
}
});
答案 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()
函数。