我正在设计一个论坛,并在我的Firebase上有这样的布局:
root
|-posts
|-postID1
|-creator: "userOne"
|-creatorUID: "simplelogin:1"
|-text: "Some Text"
|-postID2
|-creator: "userTwo"
|-creatorUID: "simplelogin:2"
|-text: "Some Other Text"
|-profile
|-simplelogin:1
|-firstName: "John"
|-user: "userOne"
|-simplelogin:2
|-firstName: "Sue"
|-user: "userTwo"
在我的论坛页面上。我只是使用Angular ng-repeat
获取Firebase上的所有帖子并将其列出。我还要打印出创建帖子的人的名字,但是现在,我只能访问{{ post.creator }}
,它只提供发布者的用户名。如何将帖子的创建者(或creatorUID)与该人的个人资料的名字字段相关联?
答案 0 :(得分:0)
如果您只是显示用户firstName,我会将用户名放在postIDX对象中。
这样会更快,并且会向Firebase发送更少的请求,并且每个帖子都会返回第四个以获取usersFirst名称。
有关构建数据和最佳做法的更多信息,请访问:https://www.firebase.com/docs/web/guide/structuring-data.html
从回复
更新如果您想获取用户详细信息,那么在每个postIDx请求中,您需要执行与此类似的操作(未经过测试和快速模拟)。
var fbRef = new Firebase('firebase path'),
postDetailsObject = {};
fbRef.child('posts').once('value', function(snapshot) {
// loop through each post
snapshot.forEach(function(childSnapshot){
var postDetails = childSnapshot.val(),
profileDetails;
postDetailsObject.post = postDetails;
fbRef.child('profile/' + postDetails.creatorUID).once('value', function(profileData) {
postDetailsObject.profile = profileData;
});
})
});
然后将postDetailsObject返回到angular,这样你就可以循环遍历单个对象。