В предоставленном вами фрагменте кода есть некоторые очевидные синтаксические ошибки, как указывалось в других ответах (в конце вашего скрипта есть дополнительный });
, и вы должны убедиться, что у вас есть кавычки вокруг обоих концов use-strict
оператор. Строка the index.js file is
в верхней части вашего фрагмента выглядит так, как будто вы допустили ошибку при создании сообщения, поэтому вам следует переместить эту строку из фрагмента кода, или, если он есть в вашем реальном скрипте, удалить его или добавить префикс.с //
чтобы закомментировать.
Какую версию NodeJS вы используете? Есть вероятность, что если вы используете более старую версию узла, вы используете синтаксис функции стрелки, который не совместим сваша версия узла.
- Проверьте версию вашего узла
node -v
с таблицей совместимости ES6 здесь . - Если версия вашего узла показывает, что он не поддерживаетФункции стрелок, попробуйте заменить следующее:
event=> {}
на function(event) {}
Редактировать: Также кажется, что стрелка забавнаяПредоставленный вами onWrite
пункт не соответствует аргументам, определенным в последней документации NodeJS Firebase для метода onWrite
.Похоже, функция стрелки должна принимать следующие аргументы (change, context) => { /* method body */ }
:
exports.modifyUser = functions.firestore
.document('users/{userID}')
.onWrite((change, context) => {
// Get an object with the current document value.
// If the document does not exist, it has been deleted.
const document = change.after.exists ? change.after.data() : null;
// Get an object with the previous document value (update/delete)
const oldDocument = change.before.data();
// perform desired operations ...
});
РЕДАКТИРОВАТЬ 2: Вы видите ошибку для user_id
undefined, потому что вы не должныпередать текст строки {user_id}
в Firestore.Это просто заполнитель, представляющий значение, которое вы должны предоставить.Вы должны предоставить действительный идентификатор пользователя.Например, если у вас есть идентификатор пользователя joe
и идентификатор уведомления 1
, вы должны передать значения следующим образом: functions.firestore.document('Users/joe/Notifications/1')
. Прочитайте документацию здесь
Вы также ссылаетесь на следующие переменные в вызове console.log
, которые также кажутся неопределенными: console.log("User ID: " + user_id +"| Notifications ID : " + notification_id);
.Вы устанавливаете это где-то еще в вашем коде?Я не вижу, где они установлены.Если нет, вам нужно установить их где-нибудь, прежде чем ссылаться на них.После того, как эти переменные установлены, вам необходимо обновить вызов метода Firestore следующим образом (обратите внимание на использование обратных тиков `` , а не кавычек).Это называется строковым шаблоном.Примерно так (очевидно используйте фактические значения для user_id
и notification_id
):
var user_id = "joe";
var notification_id = 1;
functions.firestore.document(
`Users/${user_id}/Notifications/${notification_id}`)