जावास्क्रिप्ट एसडीके: फ़ंक्शन
aura.functions की प्रत्येक विधि, उसके हस्ताक्षर, उसे आवश्यक भूमिका और वह क्या लौटाता है।
1. ग्राहक प्राप्त करें
aura.functions एक FunctionsService है। आप इसे लगभग कभी भी स्वयं नहीं बनाते हैं।
पैकेज @aurabase/functions @aurabase/aurabase-js के साथ स्थापित है। इसे अकेले ही इंस्टॉल करें यदि आप @aurabase/core से अपना क्लाइंट बनाते हैं। इसके लिए Node.js 20 या बाद के संस्करण की आवश्यकता होती है और ES मॉड्यूल और CommonJS को प्रकार की घोषणाओं के साथ शिप किया जाता है।
प्रत्येक विधि Promise<AuraResponse<T>> लौटाती है, एक वस्तु { data, error } जो कभी नहीं फेंकती:
| मामला | data | error |
|---|---|---|
| सफलता | मूल्य | null |
| सामग्री के बिना सफलता (204, खाली शरीर) | null | null |
| असफलता | null | एक AuraError |
जब आपको मूल्य की आवश्यकता हो तो error के बजाय data का परीक्षण करें: केवल तभी TypeScript को पता चलता है कि यह null नहीं है।
| तरीका | भूमिका की आवश्यकता है |
|---|---|
invoke | सार्वजनिक कुंजी (anon), उपयोगकर्ता, या service_role |
| हर दूसरी विधि | service_role (केवल सर्वर) |
2. आह्वान करें
| विकल्प | गलती करना | |
|---|---|---|
body | कोई नहीं | JSON-क्रमबद्ध। एक Blob, ArrayBuffer, टाइप किया गया ऐरे, FormData, URLSearchParams या ReadableStream बिना किसी अनुरोध के त्रुटि invalid_body लौटाता है। |
method | 'POST' | फ़ंक्शन जिस विधि को देखता है |
path | '/' | फ़ंक्शन जो पथ देखता है |
headers | कोई नहीं | समारोह को हेडर दिए गए। authorization, apikey, x-request-id और x-aura-* को प्लेटफॉर्म द्वारा हटा दिया जाता है। |
timeout | क्लाइंट डिफ़ॉल्ट, 30 सेकंड | मिलीसेकंड. कॉल रद्द करता है और कोड timeout लौटाता है। |
signal | कोई नहीं | आपका अपना AbortSignal. रद्द की गई कॉल कोड timeout लौटाती है। |
responseType | 'json' | data को कैसे डिकोड किया जाता है: एक पार्स किया गया मान, एक स्ट्रिंग, एक Blob या एक ArrayBuffer |
name URL में एन्कोड किया गया है, इसलिए /, ? या # वाला मान अपना स्थान नहीं छोड़ सकता। ऐसा नाम जिसमें ऐसे अक्षर हों, आसानी से नहीं मिलता।
invoke पहले समाप्त हो चुके उपयोगकर्ता सत्र को ताज़ा करता है, एक होने पर उपयोगकर्ता का JWT भेजता है, और कभी भी कॉल का पुनः प्रयास नहीं करता है।
इसका उपयोग कैसे करें: एक फ़ंक्शन प्रारंभ करें। यह कैसे विफल होता है: त्रुटियाँ, टाइमआउट और पुनः प्रयास।
3. सूची बनाएं और प्राप्त करें
दोनों को service_role कुंजी की आवश्यकता है। get नाम या आईडी स्वीकार करता है; यदि किसी फ़ंक्शन को आईडी की तरह नाम दिया गया है, तो नाम जीत जाता है। FunctionDef में स्रोत कोड और फ़ंक्शन के वेरिएबल शामिल होते हैं, यही कारण है कि सार्वजनिक कुंजी 403 प्राप्त करती है।
किसी फ़ंक्शन को तैनात करने, अद्यतन करने या हटाने या रहस्य लिखने की कोई विधि नहीं है: HTTP API या CLI का उपयोग करें।
4. नौकरियाँ
enqueueJobबिना किसी अनुरोध के{ code: 'bad_request', status: 400 }लौटाता है जबfunctionNameखाली होता है या केवल रिक्त स्थान होता है, और अन्यथा नाम काट देता है।listJobsstatus(pending,running,completed,failed,dead) पर फ़िल्टर करता है और 1 से 500 नौकरियों के बीच रिटर्न देता है, डिफ़ॉल्ट रूप से 50।- मृत नौकरियों को पुनः प्रयास करने की कोई विधि नहीं है: मृत-अक्षर कतार देखें।
5. क्रोन
schedule में UTC में 5 या 6 फ़ील्ड हैं। deleteCronJob नाम लेता है, और अज्ञात नाम के लिए 404 लौटाता है। कोई getCronJob या updateCronJob नहीं है।
6. प्रकार एवं त्रुटियाँ
@aurabase/aurabase-js और @aurabase/functions द्वारा निर्यात किया गया:
| निर्यात | यह क्या है |
|---|---|
FunctionsHttpError | आपके फ़ंक्शन (या प्रबंधन मार्ग) ने एक त्रुटि के साथ उत्तर दिया। error.context लौटाए गए शरीर को धारण करता है। |
FunctionsRelayError | प्लेटफ़ॉर्म विफल: नेटवर्क (status 0) या 502, 503, 504 गेटवे या रनटाइम द्वारा निर्मित। |
isRelayStatus(status) | 0, 502, 503, 504 के लिए true। |
FunctionsResponseType | `'json' \ |
दोनों त्रुटि वर्ग AuraError का विस्तार करते हैं, इसलिए isAuraError(error) सत्य है। AuraError में status, code, message, details, retryAfter और गेटर्स isNotFound, isUnauthorized, isForbidden और isRateLimited हैं।
डेटा प्रकार, @aurabase/aurabase-js द्वारा निर्यात किए गए:
| प्रकार | खेत |
|---|---|
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? } |
जब कोई फ़ंक्शन JSON ऑब्जेक्ट लौटाता है, तो data में दो गैर-गणना योग्य गुण भी होते हैं, body और status, जो पुराने संस्करणों के विरुद्ध लिखे गए कोड के लिए रखे जाते हैं। नए कोड में उन पर भरोसा न करें.