JavaScript SDK'sı: işlevler
aura.functions'nin her yöntemi, imzası, ihtiyaç duyduğu rol ve döndürdüğü şey.
1. Müşteriyi alın
aura.functions bir FunctionsService'dir. Neredeyse hiçbir zaman kendin inşa etmiyorsun.
@aurabase/functions paketi @aurabase/aurabase-js ile yüklenir. Yalnızca kendi istemcinizi @aurabase/core adresinden oluşturuyorsanız tek başına yükleyin. Node.js 20 veya üstünü gerektirir ve ES modüllerini ve CommonJS'yi tür bildirimleriyle birlikte gönderir.
Her yöntem, hiçbir zaman atmayan bir { data, error } nesnesi olan Promise<AuraResponse<T>> değerini döndürür:
| Vaka | data | error |
|---|---|---|
| Başarı | değer | null |
| İçerik olmadan başarı (204, boş gövde) | null | null |
| Başarısızlık | null | bir AuraError |
Değere ihtiyacınız olduğunda data yerine error test edin: ancak o zaman TypeScript bunun null olmadığını bilir.
| Yöntem | Rol gerekli |
|---|---|
invoke | genel anahtar (anon), kullanıcı veya service_role |
| diğer tüm yöntemler | service_role (yalnızca sunucu) |
2. çağırmak
| Seçenek | Varsayılan | |
|---|---|---|
body | hiçbiri | JSON serileştirilebilir. Blob, ArrayBuffer yazılan bir dizi, FormData, URLSearchParams veya ReadableStream herhangi bir istek olmadan invalid_body hatasını döndürür. |
method | 'POST' | Fonksiyonun gördüğü yöntem |
path | '/' | Fonksiyonun gördüğü yol |
headers | hiçbiri | Fonksiyona verilen başlıklar. authorization, apikey, x-request-id ve x-aura-* platform tarafından atılır. |
timeout | istemci varsayılanı, 30 sn | Milisaniye. Aramayı iptal eder ve timeout kodunu döndürür. |
signal | hiçbiri | Kendi AbortSignal. İptal edilen bir çağrı timeout kodunu döndürür. |
responseType | 'json' | data'nin kodu nasıl çözülür: ayrıştırılmış bir değer, bir dize, bir Blob veya bir ArrayBuffer |
name URL'de kodlanmıştır, dolayısıyla /, ? veya # içeren bir değer konumundan ayrılamaz. Bu tür karakterleri içeren bir ad bulunamıyor.
invoke önce süresi dolmuş kullanıcı oturumunu yeniler, varsa kullanıcıya JWT gönderir ve bir daha asla arama yapmayı denemez.
Nasıl kullanılır: Bir işlevi çağırın. Nasıl başarısız olur: Hatalar, zaman aşımları ve yeniden denemeler.
3. listeleyin ve alın
Her ikisinin de service_role anahtarına ihtiyacı var. get, adını veya kimliğini kabul eder; bir işlev bir kimlik gibi adlandırılırsa ad kazanır. Bir FunctionDef işlevin kaynak kodunu ve değişkenlerini içerir; bu nedenle genel anahtar 403 alır.
Bir işlevi dağıtmak, güncellemek veya silmek ya da gizli diziler yazmak için herhangi bir yöntem yoktur: HTTP API veya CLI kullanın.
4. İşler
enqueueJob,functionNameboş olduğunda veya yalnızca boşluk olduğunda herhangi bir istek olmadan{ code: 'bad_request', status: 400 }değerini döndürür ve aksi takdirde adı kısaltır.listJobs,status(pending,running,completed,failed,dead) üzerinde filtre uygular ve varsayılan olarak 50 olmak üzere 1 ile 500 arasında iş döndürür.- Ölen işleri yeniden denemenin bir yöntemi yoktur: atılacak iletiler kuyruğuna bakın.
5. Cron
schedule UTC'de 5 veya 6 alana sahiptir. deleteCronJob, adını alır ve bilinmeyen bir ad için 404 değerini döndürür. getCronJob veya updateCronJob yok.
6. Türler ve hatalar
@aurabase/aurabase-js ve @aurabase/functions tarafından dışa aktarıldı:
| İhracat | Bu ne |
|---|---|
FunctionsHttpError | İşleviniz (veya yönetim rotanız) bir hatayla yanıt verdi. error.context döndürdüğü gövdeyi tutar. |
FunctionsRelayError | Platform başarısız oldu: ağ geçidi veya çalışma zamanı tarafından üretilen ağ (status 0) veya 502, 503, 504. |
isRelayStatus(status) | 0, 502, 503, 504 için true . |
FunctionsResponseType | `'json' \ |
Her iki hata sınıfı da AuraError öğesini genişletir, dolayısıyla isAuraError(error) doğrudur. AuraError, status, code, message, details, retryAfter ve isNotFound, isUnauthorized, isForbidden ve isRateLimited alıcılarına sahiptir.
@aurabase/aurabase-js tarafından dışa aktarılan veri türleri:
| Tür | Alanlar |
|---|---|
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? } |
Bir işlev bir JSON nesnesi döndürdüğünde, data aynı zamanda eski sürümlere karşı yazılan kod için saklanan body ve status olmak üzere numaralandırılamayan iki özelliği de taşır. Yeni kodda bunlara güvenmeyin.