我在Firebase中有两个不同的数组:第一个是“常规帖子”,第二个是“用户最喜欢的帖子”。
当用户想要在收藏夹中发帖时,我会将“一般帖子”中这篇独特帖子的所有数据复制到“用户最喜欢的帖子”,并且ID相同。
问题是当帖子名称发生变化时,他只会在“常规帖子”中更改,并在“用户最喜欢的帖子”中保持不变。
所以我尝试在“常规帖子”中仅检索帖子名称,如下所示:
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”......而且它不起作用......
也许我的逻辑是假的......
你怎么看?待读你...谢谢!答案 0 :(得分:1)
最好采用不同的方法来存储数据。而不是拥有两个数据副本,只需拥有一个唯一ID。然后,在每个用户上,您可以引用他们最喜欢的帖子的唯一ID。这使您只能在一个位置更新数据。
例如,您可以使用如下数据结构:
myFirebase
- users
-user1
-user2
-user3
-favorites
-unique2 (reference to post, not the actual post)
-unique4
- posts
-unique1
-unique2
-unique3
-unique4
因此,您只需拥有一份数据副本,然后从您的用户对象中引用它以检索您要查找的内容。对帖子的更改会反映在引用该帖子的所有位置。