链接Firebase中的数据

时间:2015-08-19 19:14:16

标签: angularjs firebase

我正在设计一个论坛,并在我的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)与该人的个人资料的名字字段相关联?

1 个答案:

答案 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,这样你就可以循环遍历单个对象。