Я использую Firebase Cloud Functions и использую его только для отправки уведомлений, поэтому я хотел создать класс, чтобы упростить создание этих уведомлений (json-подобных объектов), но при доступе к свойству этого json-как и объект, он возвращает неопределенное значение.
Класс выглядит следующим образом:
class Notification
{
title: string
body: string
constructor(t: string, b: string)
{
this.title = t
this.body = b
}
Message =
{
"notification":
{
"title": this.title,
"body": this.body
}
}
}
При непосредственном доступе к переменной заголовка возвращается правильное значение, например:
let newNotification = new Notification("TITLE", "BODY")
console.log(newNotification.title) // logs -> TITLE
Но при доступе к заголовку сообщения возвращается неопределенное:
console.log(newNotification.Message.notification.title) // logs -> undefined
Текущий код следующий:
let newNotification = new Notification ("Title test", "Body test")
console.log(newNotification.title) // logs -> Title test
console.log(newNotification.Message.notification.title) // logs -> undefined
admin.messaging ().sendToTopic (topic, newNotification.Message)
.then (topicNotificationMessage =>
{
console.log("Notification OK")
response.send("Notification OK")
})
.catch (notificationError =>
{
console.log (notificationError)
response.send("Notification Error" + notificationError)
})
Консоль Firebase регистрирует это:
Notification ErrorError: Полезная нагрузка обмена сообщениями содержит недопустимое значение для свойства «messages.title».Значения должны быть строками.
Полная ошибка:
{ Error: Messaging payload contains an invalid value for the "notification.title" property. Values must be strings.
at FirebaseMessagingError.Error (native)
at FirebaseMessagingError.FirebaseError [as constructor] (/user_code/node_modules/firebase-admin/lib/utils/error.js:42:28)
at FirebaseMessagingError.PrefixedFirebaseError [as constructor] (/user_code/node_modules/firebase-admin/lib/utils/error.js:88:28)
at new FirebaseMessagingError (/user_code/node_modules/firebase-admin/lib/utils/error.js:253:16)
at /user_code/node_modules/firebase-admin/lib/messaging/messaging.js:615:27
at Array.forEach (native)
at /user_code/node_modules/firebase-admin/lib/messaging/messaging.js:612:32
at Array.forEach (native)
at Messaging.validateMessagingPayload (/user_code/node_modules/firebase-admin/lib/messaging/messaging.js:605:21)
at /user_code/node_modules/firebase-admin/lib/messaging/messaging.js:442:37
errorInfo:
{ code: 'messaging/invalid-payload',
message: 'Messaging payload contains an invalid value for the "notification.title" property. Values must be strings.' },
codePrefix: 'messaging' }
Честно говоря, я не знаю, что я делаю неправильно.