node.js firebase firebase-realtime-database firebase-cloud-messaging google-cloud-functions

node.js - Funciones de Firebase: no se puede leer la propiedad ''user_id'' de undefined



firebase-realtime-database firebase-cloud-messaging (1)

Estoy tratando de hacer una función simple de hello world firebase con mi aplicación móvil, quiero registrar la ID de usuario para poder 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 nuevos datos en una tabla de 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.<anonymous> (/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 tiene este aspecto:


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, consulte aquí para obtener 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 desencadenador de base de datos en tiempo real.

Más información aquí:

Cambios en las funciones de la nube v1.0

EventContext#params

Change