Получить среднее значение пожарной базовой функции, найти среднее значение нужных узлов - PullRequest
1 голос
/ 31 марта 2019

Я хочу усреднить нужные поля из базы данных в базе данных реального времени и поместить их на другой узел

exports.taverage = functions.database.ref('/User/tsetUser/monthQuit/{pushId}')
    .onCreate((snapshot, context) => {
        return admin.database().ref('/User/tsetUser/monthQuit/{pushId}/quitTime').once('value')
            .then(function(snapshot) {
                let sum=0;
                snapshot.forEach(child => {
                    sum = sum + child.val();
                })
                let avg = sum / snapshot.numChildren();

                return admin.database().ref('/User/tsetUser/inform/standardQuit').set(avg);
            });
    });

Ошибка: сбой Reference.set: первый аргумент содержит NaN в свойстве введите описание изображения здесь

1 Ответ

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

Насколько я понимаю, .numChildren() на самом деле должно быть .getChildrenCount(), как указано в документации .

Кроме того, рассмотрите возможность изменения вашего кода для учета случая "деления на ноль"сделав что-то вроде следующего:

functions.database.ref('/User/tsetUser/monthQuit/{pushId}')
.onCreate((snapshot, context) => {
    return admin.database().ref('/User/tsetUser/monthQuit/{pushId}/quitTime').once('value')
    .then(function(snapshot) {

        /* Get children could via getChildrenCount() */
        let divisor = snapshot.getChildrenCount();

        /* Ensure divisor is greater than zero to avoid
        divide by zero case */
        if(divisor > 0) {

            let sum=0;

            snapshot.forEach(child => {
                sum = sum + child.val();
            })
            let avg = sum / divisor;

            return admin.database().ref('/User/tsetUser/inform/standardQuit').set(avg);
        }

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