Funções do Firebase: não é possível ler a propriedade ‘user_id’ de undefined

Eu estou tentando fazer uma function olá mundo firebase simples com meu aplicativo móvel, eu quero registrar o ID do usuário para que eu possa ver que a function funciona. Este é o meu código javascript atual:

const functions = require('firebase-functions'); const admin = require('firebase-admin'); admin.initializeApp(functions.config().firebase); exports.sendNotification = functions.database.ref('/notifications/{user_id}').onWrite((event) => { console.log('Testing stuff', event.params.user_id); return; }); 

Ele triggers quando novos dados são gravados em um database específico, mas esse erro aparece:

 TypeError: Cannot read property 'user_id' of undefined at exports.sendNotification.functions.database.ref.onWrite (/user_code/index.js:8:44) at Object. (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:112:27) at next (native) at /user_code/node_modules/firebase-functions/lib/cloud-functions.js:28:71 at __awaiter (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:24:12) at cloudFunction (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:82:36) at /var/tmp/worker/worker.js:700:26 at process._tickDomainCallback (internal/process/next_tick.js:135:7) 

O database de notificação é assim: insira a descrição da imagem aqui

Você precisa instalar as funções mais recentes do firebase e firebase-admin:

 npm install firebase-functions@latest firebase-admin@latest --save npm install -g firebase-tools 

Para poder usar a nova API, verifique aqui para mais informações:

https://firebase.google.com/docs/functions/get-started#set_up_and_initialize

Mude isso:

 const functions = require('firebase-functions'); const admin = require('firebase-admin'); admin.initializeApp(functions.config().firebase); exports.sendNotification = functions.database.ref('/notifications/{user_id}').onWrite((event) => { console.log('Testing stuff', event.params.user_id); 

nisso:

 const functions = require('firebase-functions'); const admin = require('firebase-admin'); admin.initializeApp(); exports.sendNotification = functions.database.ref('/notifications/{user_id}').onWrite((change, context) => { console.log('Testing stuff', context.params.user_id); 

Para events onWrite e onUpdate , o parâmetro data possui campos before e after . Cada um deles é um DataSnapshot com os mesmos methods disponíveis em admin.database.DataSnapshot


params

Um object contendo os valores dos curingas no parâmetro path fornecido ao método ref () para um acionador do Realtime Database.

mais informações aqui:

Funções da nuvem v1.0 Alterações

EventContext # params

mudança