INTEGRITY Документация

Nile

В этом примере показано, как подключить Hyperdrive к Nile ↗ экземпляра базы данных PostgreSQL.

Nile представляет собой PostgreSQL, переработанный для мультитенантных приложений. Виртуальные базы данных тенантов Nile обеспечивают изоляцию, размещение, аналитику и другие возможности для данных и эмбеддингов ваших тенантов. Подробнее см. в документация Nile ↗ чтобы узнать больше.

1. Разрешите доступ к Hyperdrive

Cloudflare Hyperdrive можно подключить к любой базе данных Nile в вашем workspace с помощью её строки подключения, используя либо новый набор учетных данных, либо уже существующий.

консоль Nile

Чтобы получить строку подключения в консоли Nile:

  1. Войдите в консоль Nile ↗, затем выберите базу данных.
  2. В меню слева нажмите Настройки (самый нижний значок), а затем выберите Подключение.
  3. Нажмите на логотип PostgreSQL, чтобы отобразить строку подключения.
  4. Выберите «Generate credentials», чтобы сгенерировать новые учётные данные.
  5. Скопируйте строку подключения (без части «psql»).

Таким образом вы получите строку подключения, похожую на следующую:

    postgres://0191c898-...:[email protected]:5432/my_database

Имея строку подключения, теперь можно создать конфигурацию базы данных Hyperdrive.

2. Создание конфигурации базы данных

Чтобы настроить Hyperdrive, вам потребуется:

Hyperdrive принимает комбинацию этих параметров в стандартном формате строки подключения, который используется драйверами баз данных:

postgres://USERNAME:PASSWORD@HOSTNAME_OR_IP_ADDRESS:PORT/database_name

Большинство провайдеров баз данных предоставляют строку подключения, которую можно напрямую скопировать и вставить прямо в Hyperdrive.

Чтобы создать конфигурацию Hyperdrive в панели управления Cloudflare:

  1. На панели управления Cloudflare перейдите к разделу Hyperdrive страницу.

    Перейдите в Hyperdrive ↗
  2. Выберите Создать конфигурацию.

  3. Заполните форму, включая строку подключения.

  4. Выберите Создание.

Чтобы создать конфигурацию Hyperdrive с помощью Wrangler CLI:

  1. Откройте терминал и выполните следующую команду. Замените <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"
  2. Эта команда выводит привязку для конфигурационный файл 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 });
		}
	},
};

Следующие шаги