Я новичок в облачных функциях для Firebase и пытаюсь использовать их с базой данных в реальном времени.
Я следую этой документации, где в верхней части страницы есть учебник Youtube.
Вот мой код в index.ts
:
import * as functions from 'firebase-functions';
export const onMessageCreate = functions.database
.ref('/party/{partyID}/messages/{message}')
.onCreate((snapshot, context) => {
const messageData = snapshot.val()
const text = addMore(messageData.text)
return snapshot.ref.update({ text: text })
})
function addMore(text: string): string {
return text.replace(/\bhello\b/g, 'hey')
}
Однако я получаю следующую ошибку в журналах своих функций:
TypeError: Cannot read property 'replace' of undefined
at addMore (/user_code/lib/index.js:12:16)
at exports.onMessageCreate.functions.database.ref.onCreate (/user_code/lib/index.js:8:18)
at cloudFunctionNewSignature (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:105:23)
at cloudFunction (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:135:20)
at /var/tmp/worker/worker.js:733:24
at process._tickDomainCallback (internal/process/next_tick.js:135:7)
Моя структура базы данных, которая, я уверен, является правильной, выглядит следующим образом:
Что вызывает эту ошибку?Не установлен ли какой-нибудь «пакет» функций?
У меня работает узел v10.9.0 и npm 6.2.0.
Редактировать для Doug:
Спасибо, Даг, это было отличное видео!? Я отредактировал свою базу данных, которая теперь выглядит следующим образом, когда я добавляю сообщение (и предыдущие попытки, когда мои функции пытаются заменить слово):
Я также изменил код TypeScript
ref, добавив /text
в конец.Я также привел messageData
к строке, используя String()
, которая удаляет ошибки и показывает слова, как вы описали, «неопределенные».Как вы сказали, я разделил сообщения с детьми, но все еще озадачен, почему я не получаю значение и почему он добавляет дополнительного text
дочернего элемента.Спасибо!
Если у вас есть какие-либо вопросы, пожалуйста, дайте мне знать!