Funzioni di Firebase: imansible leggere la proprietà ‘user_id’ di undefined

Sto cercando di fare una semplice funzione Fire World Fire con la mia app mobile, voglio registrare l’ID utente in modo che possa vedere che la funzione funziona. Questo è il mio codice javascript corrente:

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

Si triggers quando i nuovi dati vengono scritti su database specifici ma questo errore si presenta:

 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) 

Il database di notifica è simile al seguente: inserisci la descrizione dell'immagine qui

Devi installare le funzioni firebase più recenti e firebase-admin:

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

per poter utilizzare la nuova API, controlla qui per maggiori informazioni:

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

Cambia questo:

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

in questo:

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

Per onWrite eventi onWrite e onUpdate , il parametro data ha campi before e after . Ciascuno di questi è un DataSnapshot con gli stessi metodi disponibili in admin.database.DataSnapshot


params

Un object contenente i valori dei caratteri jolly nel parametro percorso fornito al metodo ref () per un trigger di database in tempo reale.

maggiori informazioni qui:

Funzioni cloud v1.0 Modifiche

EventContext # params

Modificare