Связывание данных в Firebase

0

Я создаю форум и имею такой макет, как на моей 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) с полем имени этого профиля?

Теги:
firebase

1 ответ

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 в угловой, чтобы вы могли прокручивать один объект.

  • 0
    Я мог бы сделать это, однако я не этот метод масштабируется. Что если у меня есть несколько пользовательских атрибутов? Я не хотел бы хранить их все с каждым постом / комментарием.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню