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