Суммируйте все numChildren, возвращенные Firebase в JS - PullRequest
0 голосов
/ 14 февраля 2019

Я хочу получить сумму суммы массива numChildren, возвращаемого Firebase, в моем случае это [1,1,2,3,4].Мне нужно, чтобы было 11, но я понятия не имею, как.Я попытался с суммой и уменьшить функцию, но не привели.ниже я оставляю свой код и некоторые примеры в моей консоли.

const dbRefResenas = firebase.database().ref('Clientes/' + allUserData1.empresa + '/resena/' + 'excelentes/' + dt.getFullYear())
    dbRefResenas.once("value")
    .then(function(snapshot){
        snapshot.forEach(function(childData) {
            childData.forEach(function(childDataItem) {
                childDataItem.forEach(function(childDataItems) {
                    console.log(childDataItems.numChildren());
                })
            })
        })
   })

Моя база данных обновлена ​​

My console

1 Ответ

0 голосов
/ 14 февраля 2019

Поскольку вы получаете все данные за один раз, на самом деле все довольно просто:

const dbRefResenas = firebase.database().ref('Clientes/' + allUserData1.empresa + '/resena/' + 'excelentes/' + dt.getFullYear())
    dbRefResenas.once("value")
    .then(function(snapshot){
        var sum = 0;
        snapshot.forEach(function(childData) {
            childData.forEach(function(childDataItem) {
                childDataItem.forEach(function(childDataItems) {
                    sum = sum + childDataItems.numChildren();
                })
            })
        })
        console.log(sum);
   })

Обратите внимание, что если вы делаете это неоднократно, и не используете данные в snapshot в другихКстати, это довольно бесполезная трата пропускной способности.Возможно, вы захотите сохранить общее количество детей в отдельном узле в базе данных и обновлять его при каждой записи в базу данных.В то время как записи будут более сложными, считывание в этом случае будет намного проще / дешевле.См. Образец child-children в репозитории функций-образцов .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...