JavaScript SDK: Funktionen
Jede Methode von aura.functions, ihre Signatur, die benötigte Rolle und was sie zurückgibt.
1. Holen Sie sich den Kunden
aura.functions ist ein FunctionsService. Man baut es fast nie selbst.
Das Paket @aurabase/functions wird mit @aurabase/aurabase-js installiert. Installieren Sie es nur dann alleine, wenn Sie Ihren eigenen Client aus @aurabase/core erstellen. Es erfordert Node.js 20 oder höher und liefert ES-Module und CommonJS mit Typdeklarationen.
Jede Methode gibt Promise<AuraResponse<T>> zurück, ein Objekt { data, error }, das niemals Folgendes auslöst:
| Fall | data | error |
|---|---|---|
| Erfolg | der Wert | null |
| Erfolg ohne Inhalt (204, leerer Körper) | null | null |
| Misserfolg | null | ein AuraError |
Testen Sie data anstelle von error, wenn Sie den Wert benötigen: Nur dann weiß TypeScript, dass es sich nicht um null handelt.
| Methode | Rolle benötigt |
|---|---|
invoke | öffentlicher Schlüssel (anon), Benutzer oder service_role |
| jede andere Methode | service_role (nur Server) |
2. aufrufen
| Option | Standard | |
|---|---|---|
body | keine | JSON-serialisierbar. Ein Blob, ArrayBuffer, typisiertes Array, FormData, URLSearchParams oder ReadableStream gibt den Fehler invalid_body ohne Anfrage zurück. |
method | 'POST' | Die Methode, die die Funktion sieht |
path | '/' | Der Pfad, den die Funktion sieht |
headers | keine | Der Funktion übergebene Header. authorization, apikey, x-request-id und x-aura-* werden von der Plattform verworfen. |
timeout | Client-Standard: 30 s | Millisekunden. Bricht den Anruf ab und gibt den Code timeout zurück. |
signal | keine | Ihr eigener AbortSignal. Ein abgebrochener Anruf gibt den Code timeout zurück. |
responseType | 'json' | Wie data dekodiert wird: ein analysierter Wert, eine Zeichenfolge, ein Blob oder ein ArrayBuffer |
name ist in der URL codiert, sodass ein Wert, der /, ? oder # enthält, seine Position nicht verlassen kann. Ein Name, der solche Zeichen enthält, wird einfach nicht gefunden.
invoke aktualisiert zuerst eine abgelaufene Benutzersitzung, sendet das JWT des Benutzers, wenn es eine gibt, und wiederholt nie einen Anruf.
So verwenden Sie es: Rufen Sie eine Funktion auf. Wie es fehlschlägt: Fehler, Zeitüberschreitungen und Wiederholungsversuche.
3. Auflisten und abrufen
Beide benötigen einen service_role-Schlüssel. get akzeptiert den -Namen oder die -ID; Wenn eine Funktion wie eine ID benannt wird, gewinnt der Name. Ein FunctionDef enthält den Quellcode und die Variablen der Funktion, weshalb ein öffentlicher Schlüssel 403 erhält.
Es gibt keine Methode zum Bereitstellen, Aktualisieren oder Löschen einer Funktion oder zum Schreiben von Geheimnissen: Verwenden Sie die HTTP-API oder die CLI .
4. Jobs
enqueueJobgibt{ code: 'bad_request', status: 400 }ohne Anfrage zurück, wennfunctionNameleer ist oder nur Leerzeichen enthält, und kürzt den Namen andernfalls.listJobsfiltert nachstatus(pending,running,completed,failed,dead) und gibt zwischen 1 und 500 Jobs zurück, standardmäßig 50.- Das Wiederholen abgebrochener Jobs hat keine Methode: Siehe Warteschlange für unzustellbare Nachrichten.
5. Cron
schedule hat 5 oder 6 Felder in UTC. deleteCronJob nimmt den -Namen an und gibt 404 für einen unbekannten Namen zurück. Es gibt kein getCronJob oder updateCronJob.
6. Typen und Fehler
Exportiert von @aurabase/aurabase-js und @aurabase/functions:
| Exportieren | Was es ist |
|---|---|
FunctionsHttpError | Ihre Funktion (oder eine Verwaltungsroute) hat mit einem Fehler geantwortet. error.context enthält den zurückgegebenen Text. |
FunctionsRelayError | Die Plattform ist fehlgeschlagen: Netzwerk (status 0) oder 502, 503, 504 vom Gateway oder der Laufzeit erzeugt. |
isRelayStatus(status) | true für 0, 502, 503, 504. |
FunctionsResponseType | `'json' \ |
Beide Fehlerklassen erweitern AuraError, sodass isAuraError(error) wahr ist. AuraError hat status, code, message, details, retryAfter und die Getter isNotFound, isUnauthorized, isForbidden und isRateLimited.
Datentypen, exportiert von @aurabase/aurabase-js:
| Typ | Felder |
|---|---|
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? } |
Wenn eine Funktion ein JSON-Objekt zurückgibt, enthält data auch zwei nicht aufzählbare Eigenschaften, body und status, die für Code beibehalten werden, der für ältere Versionen geschrieben wurde. Verlassen Sie sich in neuem Code nicht auf sie.