У меня проблемы с созданием кода JavaScript, который будет отправлять пользователю уведомление. У меня есть несколько вопросов и разъяснений, которые я хочу знать:
- Почему у меня такая ошибка.
TypeError: Cannot read property 'userID' of undefined
at exports.sendNotification.functions.firestore.document.onWrite.event (/srv/index.js:8:30)
at cloudFunction (/srv/node_modules/firebase-functions/lib/cloud-functions.js:131:23)
at /worker/worker.js:825:24
at <anonymous>
at process._tickDomainCallback (internal/process/next_tick.js:229:7)
- А насчет
tokenID
, как мне это реализовать? Одноразовые вставки, когда пользователь регистрируется? или Каждый раз, когда пользователь, вошедший в идентификатор токена, будет обновляться?
Ниже приведен мой код на index.js:
'use strict'
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.sendNotification = functions.firestore.document("Buyers/{userID}/Notifications/{notificationId}").onWrite(event => {
const userID = event.params.userID;
const notificationId = event.params.notificationId;
console.log("BuyerID: "+userID);
return admin.firestore().collection("Buyers").doc(userID).collection("Notifications").doc(notificationId).get().then(queryResult => {
const notificationMessage = queryResult.data().notificationMessage;
const notificationTitle = queryResult.data().notificationTitle;
console.log("Title: "+notificationTitle);
console.log("Message: "+notificationMessage);
const toUser = admin.firestore().collection("Buyers").doc(userID).get();
return Promise.all(toUser).then(result => {
const tokenId = result[0].data().tokenId;
const notificationContent = {
notification: {
title: notificationTitle,
body: notificationMessage,
icon: "default",
sound : "default"
}
};
return admin.messaging().sendToDevice(tokenId, notificationContent).then(result => {
console.log("Notification sent!");
return null;
});
});
})
});
ИВот пример структуры моей базы данных в firestore