не может получить данные вложенного ребенка из firebase? - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь получить все отзывы для поста с определенным идентификатором.Я перепробовал все решения, но это никогда не работает.Тот же метод работает, когда я пытаюсь получить "сообщения" (узел 1-го уровня), но вложенные уровни не работают

db: enter image description here

 calculate_post_rating(post_id){

    console.log('this post id: '+post_id);

    let dbref = firebase.database().ref('/user-reviews/'+ post_id + '/');

    dbref.on('child_added', function (data){                

        console.log(data.key); //console is not even printing this, seems like this part is not even executed.

        console.log('rated by user: ' + data.val().rating);

 });

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

Код действительно работал, проблема была в том, что я вызывал другую функцию "calculate_post_rating(post_id)" из цикла, например:

, некоторые из которых пропустили вычисленный рейтинг.

let dbref = firebase.database().ref('/posts/');

dbref.on('child_added', function (data){                

    console.log(data.key); //console is not even printing this, seems like this part is not even executed.

    console.log('rated by user: ' + data.val().rating);


let final_rating = calculate_rating(data.key); // this is where the expected final rating wasn't looping properly

});

Исходя из этого, могу ли я заключить, что: поскольку функции firebase являются асинхронными, вы никогда не должны вызывать внешнюю функцию из цикла?

0 голосов
/ 05 марта 2019

Было бы проще, если бы вы структурировали свои данные по-другому и не использовали ключ внутри ключа:

https://firebase.google.com/docs/database/rest/structure-data#how_data_is_structured_its_a_json_tree

users-reviews: 
 - reviewingUserId 
   - comment: 'Wow'
   - rating: 5
   - subject: 'This may help you out'
...