Funciones de Firebase: no se puede leer la propiedad ‘user_id’ de undefined

Intento hacer una función sencilla de firebox hola mundo con mi aplicación móvil, quiero registrar la identificación del usuario para que pueda ver que la función funciona. Este es mi código javascript actual:

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; }); 

Se activa cuando se escriben datos nuevos en una base de datos específica, pero aparece este error:

 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) 

La base de datos de notificaciones se ve así: enter image description here

Necesita instalar las últimas funciones de firebase y firebase-admin:

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

para poder usar la nueva API, mira aquí para más información:

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

Cambia esto:

 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); 

dentro de esto:

 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 los eventos onWrite y onUpdate , el parámetro de datos tiene campos before y after . Cada uno de estos es un DataSnapshot con los mismos métodos disponibles en admin.database.DataSnapshot


params

Un objeto que contiene los valores de los comodines en el parámetro de ruta proporcionado al método ref () para un disparador de base de datos en tiempo real.

más información aquí:

Cloud functions v1.0 Cambios

EventContext # params

Cambio