JavaScript SDK: funkcje
Każda metoda aura.functions, jej podpis, rola, której potrzebuje i co zwraca.
1. Zdobądź klienta
aura.functions to FunctionsService. Prawie nigdy nie budujesz go sam.
Pakiet @aurabase/functions jest instalowany z @aurabase/aurabase-js. Zainstaluj go samodzielnie tylko wtedy, gdy utworzysz własnego klienta z @aurabase/core. Wymaga Node.js 20 lub nowszego i dostarcza moduły ES i CommonJS z deklaracjami typów.
Każda metoda zwraca Promise<AuraResponse<T>>, obiekt { data, error }, który nigdy nie generuje:
| Sprawa | data | error |
|---|---|---|
| Sukces | wartość | null |
| Sukces bez treści (204, puste ciało) | null | null |
| Awaria | null | AuraError |
Jeśli potrzebujesz wartości, przetestuj data zamiast error: tylko wtedy TypeScript będzie wiedział, że to nie jest null.
| Metoda | Potrzebna rola |
|---|---|
invoke | klucz publiczny (anon), użytkownik lub service_role |
| każda inna metoda | service_role (tylko serwer) |
2. wywołać
| Opcja | Domyślny | |
|---|---|---|
body | nic | Możliwość serializacji JSON. Blob, ArrayBuffer, tablica z określonym typem, FormData, URLSearchParams lub ReadableStream zwraca błąd invalid_body bez żadnego żądania. |
method | 'POST' | Metoda widziana przez funkcję |
path | '/' | Ścieżka, którą widzi funkcja |
headers | nic | Nagłówki nadane funkcji. authorization, apikey, x-request-id i x-aura-* są odrzucane przez platformę. |
timeout | klient domyślny, 30 s | milisekundy. Anuluje połączenie i zwraca kod timeout. |
signal | nic | Twój własny AbortSignal. Anulowane połączenie zwraca kod timeout. |
responseType | 'json' | Jak dekodowany jest data: przeanalizowana wartość, ciąg znaków, Blob lub ArrayBuffer |
name jest zakodowany w adresie URL, więc wartość zawierająca /, ? lub # nie może opuścić swojej pozycji. Nazwa zawierająca takie znaki po prostu nie została znaleziona.
invoke najpierw odświeża wygasłą sesję użytkownika, wysyła użytkownikowi JWT, jeśli taka istnieje, i nigdy nie ponawia próby połączenia.
Jak z tego skorzystać: Wywołaj funkcję. Jak to się nie powiedzie: Błędy, przekroczenia limitu czasu i ponowne próby.
3. wypisz i pobierz
Obydwa wymagają klucza service_role. get akceptuje nazwę lub identyfikator ; jeśli funkcja ma nazwę taką jak identyfikator, wygrywa nazwa. FunctionDef zawiera kod źródłowy i zmienne funkcji, dlatego klucz publiczny otrzymuje 403.
Nie ma metody wdrażania, aktualizowania lub usuwania funkcji lub zapisywania kluczy tajnych: użyj HTTP API lub CLI.
4. Praca
enqueueJobzwraca{ code: 'bad_request', status: 400 }bez żadnego żądania, gdyfunctionNamejest puste lub zawiera tylko spacje, w przeciwnym razie obcina nazwę.listJobsfiltrujestatus(pending,running,completed,failed,dead) i zwraca od 1 do 500 zadań, domyślnie 50.- Ponawianie martwych zadań nie ma żadnej metody: zobacz kolejkę utraconych wiadomości.
5. Kron
schedule ma 5 lub 6 pól w formacie UTC. deleteCronJob przyjmuje nazwę i zwraca 404 dla nieznanej nazwy. Nie ma getCronJob ani updateCronJob.
6. Rodzaje i błędy
Eksportowane przez @aurabase/aurabase-js i @aurabase/functions:
| Eksport | Co to jest? |
|---|---|
FunctionsHttpError | Twoja funkcja (lub trasa zarządzania) odpowiedziała błędem. error.context trzyma zwrócone ciało. |
FunctionsRelayError | Platforma uległa awarii: sieć (status 0) lub 502, 503, 504 wytworzone przez bramę lub środowisko wykonawcze. |
isRelayStatus(status) | true dla 0, 502, 503, 504. |
FunctionsResponseType | `'json' \ |
Obie klasy błędów rozszerzają AuraError, więc isAuraError(error) ma wartość true. AuraError ma status, code, message, details, retryAfter i gettery isNotFound, isUnauthorized, isForbidden i isRateLimited.
Typy danych eksportowane przez @aurabase/aurabase-js:
| Typ | Pola |
|---|---|
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? } |
Gdy funkcja zwraca obiekt JSON, data zawiera również dwie nieprzeliczalne właściwości, body i status, przechowywane dla kodu napisanego w starszych wersjach. Nie polegaj na nich w nowym kodzie.