← Cloudflare Workers / workers / databases / third-party-integrations
Supabase
Supabase ↗ представляет собой альтернативу Firebase с открытым исходным кодом и сервис баз данных PostgreSQL, который предлагает функциональность в реальном времени, резервное копирование баз данных и расширения. С помощью Supabase разработчики могут быстро развернуть базу данных PostgreSQL и создавать приложения.
Настройка клиента Supabase
Чтобы настроить интеграцию с Supabase:
-
Для подключения понадобится уже существующая база данных Supabase. Создайте базу данных Supabase ↗ или имеете существующую базу данных, к которой нужно подключить Supabase и загрузить из неё данные ↗.
-
Создайте
countriesтаблицу следующим запросом. Создать таблицу в панели Supabase можно двумя способами:- Используйте редактор таблиц, который позволяет настраивать Postgres так же, как электронную таблицу.
- Также можно использовать редактор SQL ↗:
CREATE TABLE countries ( id SERIAL PRIMARY KEY, name VARCHAR(255) NOT NULL ); -
Добавьте немного данных в только что созданную таблицу. Выполните следующие команды, чтобы добавить в таблицу страны:
INSERT INTO countries (name) VALUES ('United States'); INSERT INTO countries (name) VALUES ('Canada'); INSERT INTO countries (name) VALUES ('The Netherlands'); -
Настройте учётные данные базы данных Supabase в вашем Worker:
Добавьте URL и anon key Supabase в качестве секретов вашего Worker. Получить их можно в Панель управления Supabase ↗ в разделе Настройки > API, затем добавьте их как секреты с помощью Wrangler:
# Add the Supabase URL as a secret npx wrangler secret put SUPABASE_URL # When prompted, paste your Supabase project URL # Add the Supabase anon key as a secret npx wrangler secret put SUPABASE_KEY # When prompted, paste your Supabase anon/public key -
В Worker установите
@supabase/supabase-jsдрайвер для подключения к вашей базе данных и начала работы с данными:npm i @supabase/supabase-js -
Следующий пример показывает, как выполнить запрос к базе данных Supabase из Worker. Учётные данные для подключения к Supabase добавлены в Worker в качестве секретов.
import { createClient } from "@supabase/supabase-js"; export default { async fetch(request, env) { const supabase = createClient(env.SUPABASE_URL, env.SUPABASE_KEY); const { data, error } = await supabase.from("countries").select("*"); if (error) throw error; return new Response(JSON.stringify(data), { headers: { "Content-Type": "application/json", }, }); }, };
Подробнее о Supabase см. в Официальная документация Supabase ↗.
При подключении к Supabase через Hyperdrive вы подключаетесь напрямую к лежащей в основе базе данных Postgres. Это обеспечивает минимальную задержку при выполнении запросов к базе данных на стороне сервера из Workers. Чтобы подключиться к Supabase с помощью Hyperdrive, выполните следующие шаги:
1. Разрешите доступ к Hyperdrive
Hyperdrive можно подключить к любой существующей базе данных Supabase от имени пользователя Postgres, который создаётся при создании проекта. Если вы хотите создать для Hyperdrive нового пользователя, выполните следующие команды в SQL Editor ↗.
Конечную точку базы данных можно найти в страница настроек базы данных ↗.
Имея пользователя базы данных, пароль, endpoint базы данных (hostname и port) и имя базы данных (по умолчанию: postgres), теперь можно настроить Hyperdrive.
2. Создание конфигурации базы данных
Чтобы настроить Hyperdrive, вам потребуется:
- IP-адрес (или имя хоста) и порт вашей базы данных.
- Имя пользователя базы данных (например,
hyperdrive-demo) которую вы настроили на предыдущем шаге. - Пароль, связанный с этим именем пользователя.
- Имя базы данных, к которой должен подключиться Hyperdrive. Например,
postgres.
Hyperdrive принимает комбинацию этих параметров в стандартном формате строки подключения, который используется драйверами баз данных:
postgres://USERNAME:PASSWORD@HOSTNAME_OR_IP_ADDRESS:PORT/database_nameБольшинство провайдеров баз данных предоставляют строку подключения, которую можно напрямую скопировать и вставить прямо в Hyperdrive.
Чтобы создать конфигурацию Hyperdrive в панели управления Cloudflare:
-
На панели управления Cloudflare перейдите к разделу Hyperdrive страницу.
Перейдите в Hyperdrive ↗ -
Выберите Создать конфигурацию.
-
Заполните форму, включая строку подключения.
-
Выберите Создание.
Чтобы создать конфигурацию Hyperdrive с помощью Wrangler CLI:
-
Откройте терминал и выполните следующую команду. Замените
<NAME_OF_HYPERDRIVE_CONFIG>с именем для вашей конфигурации Hyperdrive и вставьте строку подключения, предоставленную хостом базы данных, либо заменитеuser,password,HOSTNAME_OR_IP_ADDRESS,port, а такжеdatabase_nameзаполнители значениями, соответствующими вашей базе данных:npx wrangler hyperdrive create <NAME_OF_HYPERDRIVE_CONFIG> --connection-string="postgres://user:password@HOSTNAME_OR_IP_ADDRESS:PORT/database_name" -
Эта команда выводит привязку для конфигурационный файл Wrangler:
{ "$schema": "./node_modules/wrangler/config-schema.json", "name": "hyperdrive-example", "main": "src/index.ts", // Set this to today's date "compatibility_date": "2026-08-28", "compatibility_flags": [ "nodejs_compat" ], // Pasted from the output of `wrangler hyperdrive create <NAME_OF_HYPERDRIVE_CONFIG> --connection-string=[...]` above. "hyperdrive": [ { "binding": "HYPERDRIVE", "id": "<ID OF THE CREATED HYPERDRIVE CONFIGURATION>" } ] }"$schema" = "./node_modules/wrangler/config-schema.json" name = "hyperdrive-example" main = "src/index.ts" # Set this to today's date compatibility_date = "2026-08-28" compatibility_flags = [ "nodejs_compat" ] [[hyperdrive]] binding = "HYPERDRIVE" id = "<ID OF THE CREATED HYPERDRIVE CONFIGURATION>"
3. Использование Hyperdrive в вашем Worker
Установите node-postgres драйвер:
npm i pg@>8.16.3При использовании TypeScript установите пакет типов:
npm i -D @types/pgДобавьте необходимые флаги совместимости Node.js и привязку Hyperdrive в свой wrangler.jsonc файле:
{
// required for database drivers to function
"compatibility_flags": [
"nodejs_compat"
],
// Set this to today's date
"compatibility_date": "2026-08-28",
"hyperdrive": [
{
"binding": "HYPERDRIVE",
"id": "<your-hyperdrive-id-here>"
}
]
}compatibility_flags = [ "nodejs_compat" ]
# Set this to today's date
compatibility_date = "2026-08-28"
[[hyperdrive]]
binding = "HYPERDRIVE"
id = "<your-hyperdrive-id-here>"Создайте новый Client экземпляр и передайте Hyperdrive connectionString:
// filepath: src/index.ts
import { Client } from "pg";
export default {
async fetch(
request: Request,
env: Env,
ctx: ExecutionContext,
): Promise<Response> {
// Create a new client instance for each request. Hyperdrive maintains the
// underlying database connection pool, so creating a new client is fast.
const client = new Client({
connectionString: env.HYPERDRIVE.connectionString,
});
try {
// Connect to the database
await client.connect();
// Perform a simple query
const result = await client.query("SELECT * FROM pg_tables");
return Response.json({
success: true,
result: result.rows,
});
} catch (error: any) {
console.error("Database error:", error.message);
return new Response("Internal error occurred", { status: 500 });
}
},
};Следующие шаги
- Подробнее о Как работает Hyperdrive.
- См. руководство по устранению неполадок чтобы отладить типичные проблемы.
- Узнайте больше о других варианты хранения доступен для Cloudflare Workers.