Как получить ребенка от ребёнка, когда ключ не известен в firebase - PullRequest
0 голосов
/ 07 декабря 2018

enter image description here

Следующий код позволяет мне вернуть все выражения текущего пользователя.В этом примере в консоли отображаются следующие выражения:

enter image description here

Но я не уверен, как перечислить все заголовки в разделе «Выражения» для текущего пользователя.,Желаемый результат должен быть: KIKKER, CPM2MAN

function f_returnUserDetails(a){
    var key;
    var childData;
    return new Promise(function(resolve, reject) { //return promise
        firebase.database().ref('/users/').orderByChild("uid").equalTo(a).on('value', function (snapshot) {
            snapshot.forEach(function(childSnapshot) {
                key = childSnapshot.key;
                childData = childSnapshot.val();
                resolve([childData, childSnapshot.key]);
            });
        });
    });
};

firebase.auth().onAuthStateChanged(function(user){
    var user = firebase.auth().currentUser;
    var uid = user.uid;
    f_returnUserDetails(uid).then((dbItems) => {
        console.log(dbItems[0].Expressions);
    });
});

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

вам нужно создать массив выражений и вернуть его в вашу функцию

 function f_returnUserDetails(a){
      return firebase.database().ref('/users/' + a + '/Expressions').once('value')
                .then(snapshot => {
                   let expressions = [];
                   snapshot.forEach(childSnapshot =>{
                      let expression = childSnapshot.val();
                      expression.id = childSnapshot.key;
                      expressions.push(expression);
                   }); 
                   return expressions;
                });

 }

и позже вы можете использовать эту функцию следующим образом

f_returnUserDetails(uid).then((dbItems) => {
    console.log(dbItems[0].title);
});
0 голосов
/ 07 декабря 2018

Делая следующее, вы должны получить запрошенные значения:

  firebase.database().ref('/users/').orderByChild("uid").equalTo(a).on('value', function (snapshot) {
      snapshot.forEach(function (childSnapshot) {
          key = childSnapshot.key;
          childData = childSnapshot.val();
          for (v of Object.values(childData.Expressions)) {
              if (v.hasOwnProperty('title')) {
                  console.log(v.title);
              }
          }
      });
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...