Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.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 Angularfire-检索数组中所有对象的唯一ID_Javascript_Angularjs_Firebase_Angularfire - Fatal编程技术网

Javascript Angularfire-检索数组中所有对象的唯一ID

Javascript Angularfire-检索数组中所有对象的唯一ID,javascript,angularjs,firebase,angularfire,Javascript,Angularjs,Firebase,Angularfire,我在Firebase中有两个不同的数组:第一个是“一般帖子”,第二个是“用户最喜欢的帖子” 当用户想要将一篇文章放到收藏夹中时,我将“General post”中这篇独特文章的所有数据复制到具有相同ID的“The favorite post by user” 问题是,当帖子名称更改时,他只在“一般帖子”中更改,在“用户最喜欢的帖子”中保持不变 因此,我尝试在“General post”中仅检索帖子名称,如下所示: var postRef = new Firebase("https://myapp

我在Firebase中有两个不同的数组:第一个是“一般帖子”,第二个是“用户最喜欢的帖子”

当用户想要将一篇文章放到收藏夹中时,我将“General post”中这篇独特文章的所有数据复制到具有相同ID的“The favorite post by user”

问题是,当帖子名称更改时,他只在“一般帖子”中更改,在“用户最喜欢的帖子”中保持不变

因此,我尝试在“General post”中仅检索帖子名称,如下所示:

var postRef = new Firebase("https://myapp.firebaseio.com/posts")
var userFavoriteRef = userRef.child($scope.user_id).child("favorite_posts")
$scope.favoritePosts = $firebaseArray(userFavoriteRef)
var favoritePosts = $firebaseArray(userFavoriteRef)

userFavoriteRef.once("value", function(snapshot) {

    snapshot.forEach(function(childSnapshot) {

        var key = childSnapshot.key()
        $scope.key = childSnapshot.key()
        postRef.child($scope.key).child("name").once('value', function(snap) {
            console.log(snap.val())
            $scope.name = snap.val()
        })

    })
})
但我的控制台日志中有“null”。。。而且它不工作

也许我的逻辑是错误的


你觉得怎么样?我读到你了。。。谢谢

最好采用不同的方法来存储数据。不要有两个数据副本,只需要一个具有唯一id的副本。然后在每个用户上,您可以引用他们喜欢的帖子的唯一id。这使您能够仅在一个位置更新数据

例如,您可以使用如下数据结构:

myFirebase 
  - users
   -user1
   -user2
   -user3
     -favorites
       -unique2 (reference to post, not the actual post)
       -unique4

  - posts 
    -unique1
    -unique2
    -unique3
    -unique4

因此,您只需拥有数据的一个副本,然后从您的用户对象引用它来检索您正在查找的内容。对该帖子的修改反映在引用该帖子的所有地方。

你有没有给我举个例子?因为我不明白我该怎么做…我明白你的想法,这就是我想做的。但我不知道该怎么做…抱歉,我没有时间写一个正确的代码响应。您可以在用户收藏夹上使用firebase数组,并将其设置为应用程序中的变量,然后循环该数组并执行firebase.once()以获取用户收藏夹中每个唯一id的值。将它们推送到一个作用域变量,该变量作为ng repeat同步到应用程序的前端。这是一个相当沉重的交易,虽然随着你的收藏夹数量的增长,但适合现在的需要。当我这样做时,这是一个空div。。。我只是“ID:true”,但我不知道如何显示一般帖子的详细信息。。。