Событие функции Firebase Cloud - иногда не получается получить данные об обновлении - PullRequest
0 голосов
/ 28 апреля 2018

Я написал облачную функцию Firebase для запуска при обновлении записи. иногда я не получаю ту же запись, которая обновляется. Я добавляю свой код ниже. Проверьте также прикрепленное изображение.

exports.onNotificationUpdate = functions.database.ref('/Notification/{userId}/{notificationId}/userResponse').onUpdate(event => {
    return admin.database().ref(`/Notification/${event.params.userId}/${event.params.notificationId}`).once('value').then(function (snapshot) {
        var notification = snapshot.val();

        if (!notification) {
            console.error("Notification not found on notification update");
            return;
        };

Я также могу получить объект уведомления от родителя, но я хочу знать, как лучше подходить к проблеме и с этим кодом.

это журнал ошибок

это структура базы данных

Это мой первый пост здесь, пожалуйста, дайте мне знать, если вам нужно больше информации. Спасибо

1 Ответ

0 голосов
/ 28 апреля 2018

Вам не нужно вызывать once внутри функции, поскольку она уже возвращает данные в месте, которое вы слушаете, просто прослушайте родительский узел.

Так что вы должны сделать, как:

exports.onNotificationUpdate = functions.database.ref('/Notification/{userId}/{notificationId}').onUpdate(event => {
        const notification = event.data.val(); 

        if (notification === null) {
            console.error("Notification not found on notification update");
            return null;
            //actually this would only be called in case of deletion of the Notification
        } else {
            //do something with the notification data: send Android notification, send mail, write in another node of the database, etc.
           //BUT return a Promise
           //notification const declared above is a JavaScript object containing what is under this node (i.e. a similar structure than your database structure as shown in the image within your post.)
        }
});

Я бы посоветовал вам взглянуть на эти три видео от команды Firebase:

https://www.youtube.com/watch?v=7IkUgCLr5oA&t=517s

https://www.youtube.com/watch?v=652XeeKNHSk&t=27s

https://www.youtube.com/watch?v=d9GrysWH1Lc

Также обратите внимание, что облачные функции были обновлены, и первая строка вашего кода должна быть написана иначе, если вы используете версию CF выше 1.0.0. Смотри https://firebase.google.com/docs/functions/beta-v1-diff

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