JavaScript SDK: функции
Каждый метод 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 |
Проверяйте data вместо error, когда вам нужно значение: только тогда 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пусто или содержит только пробелы, в противном случае имя обрезается.listJobsфильтруетstatus(pending,running,completed,failed,dead) и возвращает от 1 до 500 заданий, 50 по умолчанию.- Повторная попытка невыполненных заданий не имеет метода: см. очередь недоставленных сообщений .
5. Крон
schedule имеет 5 или 6 полей в формате UTC. deleteCronJob принимает имя и возвращает 404 для неизвестного имени. Не существует getCronJob или updateCronJob.
6. Виды и ошибки
Экспортировано @aurabase/aurabase-js и @aurabase/functions:
| Экспорт | Что это такое |
|---|---|
FunctionsHttpError | Ваша функция (или маршрут управления) ответила с ошибкой. error.context содержит возвращенное тело. |
FunctionsRelayError | Сбой платформы: сеть (status 0) или 502, 503, 504 , созданная шлюзом или средой выполнения. |
isRelayStatus(status) | true для 0, 502, 503, 504. |
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, которые сохраняются для кода, написанного для более старых версий. Не полагайтесь на них в новом коде.