Attivatori di Firebase Realtime Database
Con Cloud Functions, puoi gestire gli eventi in Firebase Realtime Database nello stesso progetto Google Cloud della funzione. Cloud Functions consente di eseguire operazioni sul database con privilegi amministrativi completi e garantisce che ogni modifica al database venga elaborata singolarmente. Puoi apportare modifiche al database Firebase Realtime tramite l'SDK Firebase Admin.
In un tipico ciclo di vita, una funzione di Firebase Realtime Database:
Attende le modifiche alla posizione del database.
Si attiva quando si verifica un evento e ne esegue le attività.
Riceve un oggetto dati che contiene uno snapshot dei dati archiviati nel documento specificato.
Tipi di evento
Functions consente di gestire gli eventi del database a due livelli di specificità: puoi ascoltare in modo specifico solo gli eventi di creazione, aggiornamento o eliminazione oppure puoi ascoltare qualsiasi modifica di qualsiasi tipo in un percorso. Cloud Functions supporta i seguenti tipi di eventi per Realtime Database:
Tipo di evento | Trigger |
---|---|
providers/google.firebase.database/eventTypes/ref.write |
Si attiva su qualsiasi evento di mutazione: quando i dati vengono creati, aggiornati o eliminati nel Realtime Database. |
providers/google.firebase.database/eventTypes/ref.create (valore predefinito) |
Si attiva quando vengono creati nuovi dati nel Realtime Database. |
providers/google.firebase.database/eventTypes/ref.update |
Si attiva quando i dati vengono aggiornati nel Realtime Database. |
providers/google.firebase.database/eventTypes/ref.delete |
Si attiva quando i dati vengono eliminati da Realtime Database. |
Specifica del percorso e dell'istanza del database
Per controllare quando e dove deve essere attivata la funzione, devi specificare un percorso e, facoltativamente, un'istanza di database.
Percorso
Le specifiche del percorso corrispondono a tutte le scritture che toccano un percorso, incluse quelle che si verificano in qualsiasi punto sottostante. Se imposti il percorso per la funzione come /foo/bar
, verranno trovate corrispondenze per gli eventi in entrambe le seguenti posizioni:
/foo/bar
/foo/bar/baz/really/deep/path
In entrambi i casi, Firebase interpreta che l'evento si verifica alle ore /foo/bar
e che
i dati dell'evento includono i dati vecchi e nuovi in /foo/bar
. Se i dati sugli eventi possono
essere di grandi dimensioni, valuta la possibilità di utilizzare più funzioni in percorsi più profondi anziché una singola
funzione vicino alla radice del database. Per ottenere le migliori prestazioni, richiedi solo i dati al livello più profondo possibile.
Puoi specificare un componente del percorso come carattere jolly racchiudendolo tra parentesi graffe; foo/{bar}
corrisponde a qualsiasi elemento figlio di /foo
. I valori di questi componenti dei percorsi con caratteri jolly sono disponibili all'interno dell'oggetto event.params
della funzione.
In questo esempio, il valore è disponibile come event.params.bar
.
I percorsi con caratteri jolly possono corrispondere a più eventi da un'unica scrittura. Un inserimento di:
{
"foo": {
"hello": "world",
"firebase": "functions"
}
}
corrisponde al percorso /foo/{bar}
due volte: una con "hello": "world"
e di nuovo con
"firebase": "functions"
.
Istanza
Quando si utilizza la console Google Cloud, è necessario specificare l'istanza del database.
Quando utilizzi Google Cloud CLI, l'istanza deve essere specificata come parte della stringa --trigger-resource
.
Ad esempio, quanto segue userebbe quanto segue nella stringa --trigger-resource
:
--trigger-resource projects/_/instances/DATABASE_INSTANCE/refs/PATH
Struttura dell'evento
Quando gestisci un evento Realtime Database, l'oggetto data
contiene due
proprietà fornite nel formato dell'oggetto JSON:
data
: uno snapshot dei dati acquisiti prima dell'evento che ha attivato la funzione.delta
: uno snapshot dei dati acquisiti dopo l'evento che ha attivato la funzione.
Esempio di codice
Node.js
Python
Go
Java
C#
Ruby
PHP
Deployment della funzione
Il seguente comando gcloud esegue il deployment di una funzione che verrà attivata dagli eventi create
sul percorso /messages/{pushId}/original
:
gcloud functions deploy FUNCTION_NAME \ --entry-point ENTRY_POINT \ --trigger-event providers/google.firebase.database/eventTypes/ref.create \ --trigger-resource projects/_/instances/DATABASE_INSTANCE/refs/messages/{pushId}/original \ --runtime RUNTIME
Argomento | Descrizione |
---|---|
FUNCTION_NAME |
Il nome registrato della Cloud Function di cui stai eseguendo il deployment.
Può essere il nome di una funzione nel codice sorgente o una stringa arbitraria. Se FUNCTION_NAME è una stringa arbitraria, devi includere il flag --entry-point .
|
--entry-point ENTRY_POINT |
Il nome di una funzione o di una classe nel codice sorgente. Facoltativo, a meno che
tu non abbia utilizzato FUNCTION_NAME
per specificare la funzione
nel codice sorgente da eseguire durante il deployment. In questo caso, devi utilizzare --entry-point per fornire il nome della funzione eseguibile.
|
--trigger-event NAME |
Il nome del tipo di evento che la funzione vuole ricevere. In questo caso, sarà una delle seguenti: scrittura, creazione, aggiornamento o eliminazione. |
--trigger-resource NAME |
Il percorso completo del database in cui la funzione rimane in ascolto.
Deve essere conforme al seguente formato:
projects/_/instances/DATABASE_INSTANCE/refs/PATH .
|
--runtime RUNTIME |
Il nome del runtime in uso. Per un elenco completo, consulta la documentazione di riferimento di gcloud .
|