Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用firebase阵列执行ng repeat?_Javascript_Firebase_Firebase Realtime Database - Fatal编程技术网

Javascript 如何使用firebase阵列执行ng repeat?

Javascript 如何使用firebase阵列执行ng repeat?,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,上下文 在Firebase数据库中,我存储“事件”和“用户”。用户可以拥有收藏夹事件,为了管理它们,我只将事件的id存储在收藏夹用户的DB位置。因此,为了获取喜爱的事件信息,我需要首先获取事件id,然后转到DB events位置,以收集我需要的所有数据 问题 我希望将所有喜爱的事件信息存储在一个数组中(每个事件都是一个对象,其中包含:“key”:“value”),以便在HTML视图中使用该数组并打印信息。但它不符合我的编码方式…:( //此ref在用户数据库位置中的最喜爱事件id(在我的示例

上下文

在Firebase数据库中,我存储“事件”和“用户”。用户可以拥有收藏夹事件,为了管理它们,我只将事件的id存储在收藏夹用户的DB位置。因此,为了获取喜爱的事件信息,我需要首先获取事件id,然后转到DB events位置,以收集我需要的所有数据

问题

我希望将所有喜爱的事件信息存储在一个数组中(每个事件都是一个对象,其中包含:“key”:“value”),以便在HTML视图中使用该数组并打印信息。但它不符合我的编码方式…:(

//此ref在用户数据库位置中的最喜爱事件id(在我的示例中仅为2)太大
var refuerFavoris=firebase.database().ref().child(“users/”+user.uid+“/events/favoris”);
$scope.favorisTmp=$firebaseArray(RefuerFavorIS);
//这显示了一个数组,其中包含两个对象(这是我的两个用户最喜欢的事件),其中包括ID
log($scope.favorisTmp);
//这是为了加载对象,并使用foreach获取这些id,以便在下一个ref调用中使用它们
$scope.favorisTmp.$loaded().then(函数()
{
angular.forEach($scope.favorisTmp,函数(favoris)
{
//这显示了两行:每个对象的id
console.log(favoris.$id);
//调用一个新的ref以使用以前的id访问事件信息(在DB的不同位置)
firebase.database().ref(“events/”+favoris.$id)。一次('value')。然后(函数(快照)
{
//尝试为我拥有的每个id存储事件数据(在我的示例中,只有两个)
snapshot.forEach(函数(favorisSnap)
{
var favSnap=favorisSnap.val();
//这显示了很多我不想要的“未定义”的线。我想要两个对象,里面有所有的信息
控制台日志(favSnap.nbPersonne);
//$scope.favorisF是一个数组,我希望在ng重复中使用它来打印每个事件的所有数据
//现在,这没有显示任何东西
$scope.favorisF=favSnap;
});
//如果在前一个函数中使用favSnap,我得到的“favSnap”是未定义的错误
console.log(favSnap);
});
});
});

{{f.nbPersonne}}

我想你在这里打错了

var refuerFavoris=firebase.database().ref(“events/favoris/”+favoris.$id).once('value'))

非常感谢Abdel,我解决了我的问题:

这是解决方案

$scope.newFav=[];
log($scope.newFav);
$scope.favorisTmp.$loaded().then(函数()
{
angular.forEach($scope.favorisTmp,函数(favoris)
{
console.log(favoris.$id);
var refFavoris=firebase.database().ref(“事件/”+favoris.$id);
关于('value',函数(捕捉)
{
$scope.newFav.push(snap.val());
log(“Scope newFav vaut:”,$Scope.newFav);
});
});

})
有人能帮到我吗?我不这么认为,这里的问题是“favoris”变量只能在这个循环行声明:angular.forEach($scope.favorisTmp,function(favoris)。自从这篇文章之后,我尝试了另一种方法,出现了一个新问题,如何在循环期间填充数组?尝试了“push”和“$add”方法,但没有人起作用…你确定
nbPersonne
是每个事件下的一个键吗?@孟菲斯请修复你的代码片段,因为它们不起作用。请注意,虽然你的解决方案可能起作用,但每当数据集更改时,你都会将新项目推送到数组中,这可能不是你想要的。我建议你在中使用
一次stead.Oh没有看到这一点,在我的解决方案中,您会在哪里看到“一次”?这是您在
firebase.database.Reference
上调用的方法,在您的案例中,它是与
上的
相结合使用的
refFavoris
。请查看以获取更多解释