Firebase функции datasnapshot не работает - PullRequest
0 голосов
/ 02 сентября 2018

Я пытаюсь запустить следующий код в функциях Firebase, и он выдает ошибку, не распознавая datasnapshot. чем это может быть вызвано?

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();


exports.updateVotes = functions.database.ref('travels/{travelId}/locations/{locationId}/voting/users')
.onUpdate((userVotes, context) => {
    var travelId = context.params.travelId;
    var locationId = context.params.locationId
    var sumVotes = 0;

    userVotes.forEach((userVote) => {
        sumVotes += userVote.val().userVote;

    })
    // var votes = userVotes.val();
    // for (var vote in votes) {
    //     if (votes.hasOwnProperty(vote)) {
    //         sumVotes += votes[vote].userVote;
    //     }
    // }

    return admin.database()
        .ref('travels/' + travelId + '/locations/' + locationId + '/voting')
        .update({ votes: sumVotes })

})

Ошибка:

TypeError: userVotes.forEach не является функцией export.updateVotes.functions.database.ref.onUpdate

1 Ответ

0 голосов
/ 03 сентября 2018

onUpdate не возвращает DataSnapshot, возвращает объект Change.

Вам нужно выбрать свойство after или before - хотите ли вы получить информацию перед записью или после записи (обычно это после - это новые данные в Firebase).

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();


exports.updateVotes = functions.database.ref('travels/{travelId}/locations/{locationId}/voting/users')
.onUpdate((change, context) => {
    var travelId = context.params.travelId;
    var locationId = context.params.locationId
    var sumVotes = 0;

    var userVotes = change.after;

    userVotes.forEach((userVote) => {
        sumVotes += userVote.val().userVote;

    })

    return admin.database()
        .ref('travels/' + travelId + '/locations/' + locationId + '/voting')
        .update({ votes: sumVotes })

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