Attivatori di Firebase Realtime Database
Con le funzioni di Cloud Run, puoi gestire gli eventi in Firebase Realtime Database nello stesso progetto Google Cloud della funzione. Le funzioni Cloud Run ti consentono di eseguire operazioni di database con privilegi amministrativi completi e garantiscono che ogni modifica al database venga elaborata singolarmente. Puoi rendere Firebase Realtime modifiche al database tramite SDK Admin Firebase.
In un ciclo di vita tipico, una funzione di Firebase Realtime Database esegue le seguenti operazioni:
Attende le modifiche a una determinata posizione del database.
Si attiva quando si verifica un evento ed esegue le relative attività.
Riceve un oggetto dati che contiene uno snapshot dei dati archiviati nel documento specificato.
Tipi di evento
Le funzioni ti consentono di gestire gli eventi del database a due livelli di specificità: puoi monitorare specificamente solo gli eventi di creazione, aggiornamento o eliminazione oppure puoi monitorare qualsiasi modifica di qualsiasi tipo a un percorso. Le funzioni Cloud Run supportano i seguenti tipi di eventi per il database in tempo reale:
Tipo di evento | Trigger |
---|---|
providers/google.firebase.database/eventTypes/ref.write |
Attivato per qualsiasi evento di mutazione: quando i dati vengono creati, aggiornati o eliminati nel database in tempo reale. |
providers/google.firebase.database/eventTypes/ref.create (valore predefinito) |
Viene attivato quando vengono creati nuovi dati nel database in tempo reale. |
providers/google.firebase.database/eventTypes/ref.update |
Si attiva quando i dati vengono aggiornati in 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 e specificare facoltativamente un'istanza di database.
Percorso
Le specifiche del percorso corrispondono a tutte le scritture che riguardano un percorso, incluse quelle che
avvengono in qualsiasi punto sottostante. Se imposti il percorso della funzione su /foo/bar
,
viene associato agli eventi in entrambe le 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
i dati sugli eventi includono i dati vecchi e nuovi di /foo/bar
. Se i dati sugli eventi potrebbero 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 circondandolo con
parentesi graffe; foo/{bar}
corrisponde a un qualsiasi elemento secondario di /foo
. I valori di questi caratteri jolly
i componenti del percorso 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 di una singola scrittura. Un inserto di:
{
"foo": {
"hello": "world",
"firebase": "functions"
}
}
corrisponde due volte al percorso /foo/{bar}
: una con "hello": "world"
e di nuovo con
"firebase": "functions"
.
Istanza
Quando utilizzi 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, la query seguente userebbe quanto segue in --trigger-resource
stringa:
--trigger-resource projects/_/instances/DATABASE_INSTANCE/refs/PATH
Struttura dell'evento
Quando gestisci un evento di Realtime Database, l'oggetto data
contiene due proprietà fornite in formato oggetto JSON:
data
: un'istantanea dei dati acquisiti prima dell'evento che 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
Vai
Java
C#
Ruby
PHP
Eseguire il deployment della funzione
Il seguente comando gcloud esegue il deployment di una funzione che verrà attivata dagli eventi create
nel percorso /messages/{pushId}/original
:
gcloud functions deploy FUNCTION_NAME \ --no-gen2 \ --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 funzione Cloud Run di cui stai eseguendo il deployment.
Può essere il nome di una funzione nel
codice sorgente o una stringa arbitraria. Se FUNCTION_NAME è un
stringa arbitraria, devi includere
Flag --entry-point .
|
--entry-point ENTRY_POINT |
Il nome di una funzione o di una classe nel codice sorgente. Facoltativo, a meno che
non hai utilizzato FUNCTION_NAME
per specificare
nel codice sorgente da eseguire durante il deployment. In questo
devi utilizzare --entry-point per indicare il nome del
una funzione eseguibile.
|
--trigger-event NAME |
Il nome del tipo di evento che la funzione vuole ricevere. In questo caso, sarà uno dei 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, vedi
Riferimento gcloud .
|