SDK JavaScript: funzioni
Ogni metodo di aura.functions, la sua firma, il ruolo di cui ha bisogno e cosa restituisce.
1. Ottieni il cliente
aura.functions è un FunctionsService. Non te lo costruisci quasi mai da solo.
Il pacchetto @aurabase/functions viene installato con @aurabase/aurabase-js. Installalo da solo solo se componi il tuo client da @aurabase/core. Richiede Node.js 20 o successivo e fornisce moduli ES e CommonJS con dichiarazioni di tipo.
Ogni metodo restituisce Promise<AuraResponse<T>>, un oggetto { data, error } che non lancia mai:
| Caso | data | error |
|---|---|---|
| Successo | il valore | null |
| Successo senza contenuto (204, corpo vuoto) | null | null |
| Fallimento | null | un AuraError |
Prova data anziché error quando hai bisogno del valore: solo allora TypeScript sa che non è null.
| Metodo | Ruolo necessario |
|---|---|
invoke | chiave pubblica (anon), utente o service_role |
| ogni altro metodo | service_role (solo server) |
2. invocare
| Opzione | Predefinito | |
|---|---|---|
body | nessuno | Serializzabile in JSON. Un Blob, ArrayBuffer, array digitato, FormData, URLSearchParams o ReadableStream restituisce l'errore invalid_body senza alcuna richiesta. |
method | 'POST' | Il metodo visto dalla funzione |
path | '/' | Il percorso visualizzato dalla funzione |
headers | nessuno | Intestazioni assegnate alla funzione. authorization, apikey, x-request-id e x-aura-* vengono scartati dalla piattaforma. |
timeout | impostazione predefinita del client, 30 s | Millisecondi. Annulla la chiamata e restituisce il codice timeout. |
signal | nessuno | Il tuo AbortSignal. Una chiamata annullata restituisce il codice timeout. |
responseType | 'json' | Come viene decodificato data: un valore analizzato, una stringa, un Blob o un ArrayBuffer |
name è codificato nell'URL, quindi un valore contenente /, ? o # non può lasciare la sua posizione. Un nome che contenga tali caratteri semplicemente non viene trovato.
invoke aggiorna prima una sessione utente scaduta, invia JWT dell'utente quando ce n'è una e non ritenta mai una chiamata.
Come usarlo: Invoca una funzione. Come fallisce: Errori, timeout e tentativi.
3. elenca e ottieni
Entrambi necessitano di una chiave service_role. get accetta il nome o l'id; se una funzione ha un nome simile a un ID, il nome vince. Un FunctionDef contiene il codice sorgente e le variabili della funzione, motivo per cui una chiave pubblica riceve 403.
Non esiste un metodo per distribuire, aggiornare o eliminare una funzione o per scrivere segreti: utilizzare API HTTP o CLI.
4. Lavori
enqueueJobrestituisce{ code: 'bad_request', status: 400 }senza alcuna richiesta quandofunctionNameè vuoto o contiene solo spazi e altrimenti taglia il nome.listJobsfiltra sustatus(pending,running,completed,failed,dead) e restituisce tra 1 e 500 lavori, 50 per impostazione predefinita.- Il tentativo di riprovare i lavori morti non ha metodo: vedere la coda di messaggi non recapitati.
5. Cron
schedule ha 5 o 6 campi, in UTC. deleteCronJob accetta il nome e restituisce 404 per un nome sconosciuto. Non esiste getCronJob o updateCronJob.
6. Tipologie ed errori
Esportato da @aurabase/aurabase-js e @aurabase/functions:
| Esportazione | Di cosa si tratta |
|---|---|
FunctionsHttpError | La tua funzione (o un percorso di gestione) ha risposto con un errore. error.context contiene il corpo restituito. |
FunctionsRelayError | La piattaforma non è riuscita: rete (status 0) o 502, 503, 504 prodotta dal gateway o dal runtime. |
isRelayStatus(status) | true per 0, 502, 503, 504. |
FunctionsResponseType | `'json' \ |
Entrambe le classi di errore estendono AuraError, quindi isAuraError(error) è vero. AuraError ha status, code, message, details, retryAfter e i getter isNotFound, isUnauthorized, isForbidden e isRateLimited.
Tipi di dati esportati da @aurabase/aurabase-js:
| Digitare | Campi |
|---|---|
FunctionDef | id, project_id, name, runtime, code, code_hash, env_vars, permissions, is_active, created_at, updated_at |
FunctionPermissions | allow_net: string[], memory_mb: number, timeout_secs: number |
Job | id, project_id, function_name, status, payload, attempts, max_attempts, error?, scheduled_at, started_at?, created_at, completed_at? |
CronJob | id, project_id, name, schedule, function_name, payload, is_active, last_run?, next_run?, created_at |
AuraResponse<T> | { data, error, meta? } |
Quando una funzione restituisce un oggetto JSON, data trasporta anche due proprietà non enumerabili, body e status, mantenute per il codice scritto rispetto alle versioni precedenti. Non fare affidamento su di essi nel nuovo codice.