Функции firebase, показывающие ошибку, не могут прочитать свойство предыдущее из неопределенного

Я реализовал функции firebase в своем приложении, и раньше он работал нормально, но теперь показывает ошибку Невозможно прочесть свойство "предыдущее" из неопределенного

Журналы ошибок функции

TypeError: Cannot read property 'previous' of undefined
at exports.LoveNotification.functions.database.ref.onWrite (/user_code/index.js:223:16)
at cloudFunctionNewSignature (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:109:23)
at cloudFunction (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:139:20)
at /var/tmp/worker/worker.js:730:24
at process._tickDomainCallback (internal/process/next_tick.js:135:7)
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
1 161
1

Ответы 1

Сигнатура триггеров Cloud Functions изменилась. Кажется, вы используете бета-версию, но выполняете развертывание до последней версии. См. Полные инструкции в руководство по миграции.

Оттуда:

Before (<= v0.9.1)

exports.dbWrite = functions.database.ref('/path').onWrite((event) => {
  const beforeData = event.data.previous.val(); // data before the write
  const afterData = event.data.val(); // data after the write
});

Now (>= v1.0.0)

exports.dbWrite = functions.database.ref('/path').onWrite((change, context) => {
  const beforeData = change.before.val(); // data before the write
  const afterData = change.after.val(); // data after the write
});

Итак, ваш код должен выглядеть примерно так:

exports.LoveNotification = functions.database.ref("/Member/{pushId}").onWrite((change, context) => {

 if (change.before.exists()) {
    return;
 } else {
    var eventLove = change.after.data.val();
    var author =eventLove.fullname;
    var title = eventLove.course;
    var key = eventLove.key;

    const payload = {
        "data": {
                    "post_id": key
                  },
        notification: {
            title: author +'Joined the app',
            body: `Course `+title,
            sound: "default",
            icon: "ic_launcher",

        }
    };

    const options = {
        priority: "high",
        timeToLive: 60 * 60 * 24 //24 hours
    };
    console.info('Sending notifications');
    return admin.messaging().sendToTopic("Member", payload, options);

    }
});

Не могли бы вы помочь мне с обновленной версией, так как я пробовал некоторые незначительные изменения, но это не сработало. Не могли бы вы опубликовать обновленный код для моего кода. Я пробовал, но напортачил.

mailtester tester 10.08.2018 11:55

Я добавил быструю версию. Но если вы новичок в JavaScript, облачные функции для Firebase - не лучший способ его изучить. Я рекомендую сначала прочитать документация для веб-разработчиков и / или взять codelab для веб-разработчиков. Они охватывают многие базовые взаимодействия JavaScript, Интернета и Firebase. Вы также можете использовать Admin SDK в локальном процессе Node.js, который можно отлаживать с помощью локального отладчика. После этого вы будете гораздо лучше подготовлены для написания кода для облачных функций.

Frank van Puffelen 10.08.2018 15:11

Другие вопросы по теме