gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-27 22:58:27 26 4
gpt4 key购买 nike

我在 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”...而且它不起作用...

也许我的逻辑是错误的......

你觉得怎么样?等待阅读您...谢谢!

最佳答案

采用不同的方法来存储数据可能会更好。不必拥有两份数据副本,只需拥有一份具有唯一 ID 的副本即可。然后,对于每个单独的用户,您可以引用他们收藏的帖子的唯一 ID。这使您能够仅在一个位置更新数据。

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

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

- posts
-unique1
-unique2
-unique3
-unique4

因此,您只有一份数据副本,然后从用户对象中引用它来检索您要查找的内容。对帖子的更改会反射(reflect)在引用该帖子的所有地方。

关于javascript - Angularfire - 检索数组中所有对象的唯一ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37362802/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com