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

Начало работы

В этом руководстве вы узнаете, как:

Эти задачи можно выполнить через CLI или через панель управления Cloudflare.

быстрый старт

Если вы хотите пропустить шаги и быстро начать работу, нажмите кнопку ниже.

Deploy to Cloudflare

Это создаёт репозиторий в вашем аккаунте GitHub и разворачивает приложение в Cloudflare Workers. Выберите этот вариант, если вы уже знакомы с Cloudflare Workers и хотите пропустить пошаговые инструкции.

Если вы только начинаете работать с Cloudflare Workers, можете пройти все шаги вручную.

Предварительные требования

  1. Зарегистрируйтесь для получения Аккаунт Cloudflare.
  2. Установка Node.js.

менеджер версий Node.js

Используйте менеджер версий Node, например Volta или nvm чтобы избежать проблем с правами доступа и переключать версии Node.js. Wrangler, о котором пойдёт речь далее в этом руководстве, требует версию Node 16.17.0 или более поздней версии.

1. Создайте Worker

Создайте новый Worker, чтобы использовать его для запросов к базе данных.

  1. Создайте новый проект с именем d1-tutorial выполнив:

    npm create cloudflare@latest -- d1-tutorial

    Для настройки выберите следующие параметры:

    • Для С чего вы хотите начать?, выберите Hello World example.
    • Для Какой шаблон вы хотите использовать?, выберите Worker only.
    • Для Какой язык вы хотите использовать?, выберите TypeScript.
    • Для Хотите использовать git для контроля версий?, выберите Yes.
    • Для Хотите развернуть приложение?, выберите No (мы внесём некоторые изменения перед развёртыванием).

    Это создаёт новый d1-tutorial каталог, как показано ниже.

    • d1-tutorial
      • node_modules/
      • test/
      • src
        • index.ts
      • package-lock.json
      • package.json
      • testconfig.json
      • vitest.config.mts
      • worker-configuration.d.ts
      • wrangler.jsonc

    Ваш новый d1-tutorial каталог включает:

  1. На панели управления Cloudflare перейдите к разделу Workers & Pages страницу. Перейдите в Workers & Pages ↗
  2. Выберите Создать приложение.
  3. Выберите Начните с Hello World! > Начало работы.
  4. Присвойте имя своему Worker. Для этого руководства назовите Worker d1-tutorial.
  5. Выберите Развернуть.

2. Создайте базу данных

База данных D1 концептуально похожа на многие другие SQL-базы данных: база данных может содержать одну или несколько таблиц, возможность выполнять к ним запросы и необязательные индексы. D1 использует знакомый язык запросов SQL (как в SQLite).

Чтобы создать свою первую базу данных D1:

  1. Перейдите в каталог, который вы только что создали для своего проекта Workers:

    cd d1-tutorial
  2. Выполните следующую wrangler@latest d1 команду и укажите имя базы данных. В этом руководстве база данных называется prod-d1-tutorial:

    npx wrangler@latest d1 create prod-d1-tutorial
    ✅ Successfully created DB 'prod-d1-tutorial' in region WEUR
    Created your new D1 database.
    
    {
    	"d1_databases": [
    		{
    			"binding": "prod_d1_tutorial",
    			"database_name": "prod-d1-tutorial",
    			"database_id": "<unique-ID-for-your-database>"
    		}
    	]
    }
  3. При появлении запроса: Would you like Wrangler to add it on your behalf?, выберите Yes. Это автоматически добавит привязку в конфигурационный файл Wrangler.

Это создаёт новую базу данных D1 и выводит привязка конфигурация, необходимая на следующем шаге.

  1. На панели управления Cloudflare перейдите к разделу SQL-база данных D1 страницу.

    Перейдите в SQL-база данных D1 ↗
  2. Выберите Create Database.

  3. Присвойте имя своей базе данных. Для этого руководства назовите базу данных D1 prod-d1-tutorial.

  4. (Необязательно) Укажите подсказку расположения. Подсказка расположения представляет собой необязательный параметр, с помощью которого можно указать желаемое географическое расположение вашей базы данных. См. Укажите подсказку расположения, где это описано подробнее.

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

3. Привяжите свой Worker к базе данных D1

Для подключения Worker к базе данных D1 необходимо создать привязку. Bindings позволяют вашим Workers обращаться к ресурсам, таким как D1, на платформе разработки Cloudflare.

Чтобы привязать базу данных D1 к своему Worker:

Привязку можно автоматически добавить в конфигурационный файл Wrangler при выполнении wrangler d1 create команду (шаг 3 из 2. Создайте базу данных).

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

  1. Скопируйте строки, полученные на шаге 2 2. Создайте базу данных из терминала.

  2. Добавьте их в конец файла Wrangler.

    {
      "d1_databases": [
        {
          "binding": "prod_d1_tutorial", // available in your Worker on env.DB
          "database_name": "prod-d1-tutorial",
          "database_id": "<unique-ID-for-your-database>"
        }
      ]
    }
    [[d1_databases]]
    binding = "prod_d1_tutorial"
    database_name = "prod-d1-tutorial"
    database_id = "<unique-ID-for-your-database>"

    А именно:

    • Значение (строка), которое вы задали для binding это имя привязки, и используется для обращения к этой базе данных в вашем Worker. В этом руководстве назовите свою привязку prod_d1_tutorial.
    • Имя привязки должно быть допустимое имя переменной JavaScript. Например, binding = "MY_DB" или binding = "productionDB" оба варианта были бы допустимыми именами для привязки.
    • Привязка доступна в Worker по адресу env.<BINDING_NAME> и D1 Workers Binding API предоставляется в этой привязке.

Вы также можете привязать базу данных D1 к Pages Function. Дополнительную информацию см. в Привязки Functions для D1.

Привязки создаются путем добавления их в уже созданный Worker.

  1. На панели управления Cloudflare перейдите к разделу Workers & Pages страницу. Перейдите в Workers & Pages ↗
  2. Выберите d1-tutorial Worker, который вы создали в шаг 1.
  3. Перейдите в Bindings на вкладке.
  4. Выберите Add binding.
  5. Выберите База данных D1 > Add binding.
  6. Присвойте имя привязке в Имя переменной, затем выберите prod-d1-tutorial базы данных D1, которую вы создали в шаг 2 из раскрывающегося списка. В этом руководстве назовите свою привязку prod_d1_tutorial.
  7. Выберите Add binding.

4. Выполните запрос к своей базе данных D1

Заполнение базы данных D1

После правильной подготовки вашего конфигурационный файл Wrangler, настройте свою базу данных. Создайте schema.sql файл, используя приведённый ниже синтаксис SQL, чтобы инициализировать базу данных.

  1. Скопируйте следующий код и сохраните его как schema.sql файл в d1-tutorial каталог Worker, который вы создали на шаге 1:

    DROP TABLE IF EXISTS Customers;
    CREATE TABLE IF NOT EXISTS Customers (CustomerId INTEGER PRIMARY KEY, CompanyName TEXT, ContactName TEXT);
    INSERT INTO Customers (CustomerID, CompanyName, ContactName) VALUES (1, 'Alfreds Futterkiste', 'Maria Anders'), (4, 'Around the Horn', 'Thomas Hardy'), (11, 'Bs Beverages', 'Victoria Ashworth'), (13, 'Bs Beverages', 'Random Name');
  2. Сначала инициализируйте базу данных для локального запуска и тестирования. Разверните новую базу данных D1, выполнив команду:

    npx wrangler d1 execute prod-d1-tutorial --local --file=./schema.sql
    ⛅️ wrangler 4.13.2
    -------------------
    
    🌀 Executing on local database prod-d1-tutorial (<DATABASE_ID>) from .wrangler/state/v3/d1:
    🌀 To execute on your remote database, add a --remote flag to your wrangler command.
    🚣 3 commands executed successfully.
  3. Убедитесь, что данные находятся в базе данных, выполнив:

    npx wrangler d1 execute prod-d1-tutorial --local --command="SELECT * FROM Customers"
     🌀 Executing on local database jun-d1-db-gs-2025 (cf91ec5c-fa77-4d49-ad8e-e22921b996b2) from .wrangler/state/v3/d1:
     🌀 To execute on your remote database, add a --remote flag to your wrangler command.
     🚣 1 command executed successfully.
     ┌────────────┬─────────────────────┬───────────────────┐
     │ CustomerId │ CompanyName         │ ContactName       │
     ├────────────┼─────────────────────┼───────────────────┤
     │ 1          │ Alfreds Futterkiste │ Maria Anders      │
     ├────────────┼─────────────────────┼───────────────────┤
     │ 4          │ Around the Horn     │ Thomas Hardy      │
     ├────────────┼─────────────────────┼───────────────────┤
     │ 11         │ Bs Beverages        │ Victoria Ashworth │
     ├────────────┼─────────────────────┼───────────────────┤
     │ 13         │ Bs Beverages        │ Random Name       │
     └────────────┴─────────────────────┴───────────────────┘

Используйте Dashboard, чтобы создать таблицу и заполнить её данными.

  1. На панели управления Cloudflare перейдите к разделу SQL-база данных D1 страницу.

    Перейдите в SQL-база данных D1 ↗
  2. Выберите prod-d1-tutorial базу данных, которую вы создали в шаг 2.

  3. Выберите Консоль.

  4. Вставьте следующий фрагмент SQL-кода.

    DROP TABLE IF EXISTS Customers;
    CREATE TABLE IF NOT EXISTS Customers (CustomerId INTEGER PRIMARY KEY, CompanyName TEXT, ContactName TEXT);
    INSERT INTO Customers (CustomerID, CompanyName, ContactName) VALUES (1, 'Alfreds Futterkiste', 'Maria Anders'), (4, 'Around the Horn', 'Thomas Hardy'), (11, 'Bs Beverages', 'Victoria Ashworth'), (13, 'Bs Beverages', 'Random Name');
  5. Выберите Выполнить. Это создаёт таблицу с именем Customers в вашем prod-d1-tutorial базу данных.

  6. Выберите Таблицы, затем выберите Customers таблицу, чтобы просмотреть содержимое таблицы.

Запросы на запись в вашем Worker

После настройки базы данных выполните SQL-запрос прямо из Worker.

  1. Перейдите в свой d1-tutorial Worker и откройте index.ts файл. index.ts файл, где настраивается взаимодействие вашего Worker с D1.

  2. Очистите содержимое index.ts.

  3. Вставьте следующий фрагмент кода в свой index.ts файле:

    index.js
    export default {
    	async fetch(request, env) {
    		const { pathname } = new URL(request.url);
    
    		if (pathname === "/api/beverages") {
    			// If you did not use `DB` as your binding name, change it here
    			const { results } = await env.prod_d1_tutorial
    				.prepare("SELECT * FROM Customers WHERE CompanyName = ?")
    				.bind("Bs Beverages")
    				.run();
    			return Response.json(results);
    		}
    
    		return new Response(
    			"Call /api/beverages to see everyone who works at Bs Beverages",
    		);
    	},
    };
    index.ts
    export interface Env {
    	// If you set another name in the Wrangler config file for the value for 'binding',
    	// replace "DB" with the variable name you defined.
    	prod_d1_tutorial: D1Database;
    }
    
    export default {
    	async fetch(request, env): Promise<Response> {
    		const { pathname } = new URL(request.url);
    
    		if (pathname === "/api/beverages") {
    			// If you did not use `DB` as your binding name, change it here
    			const { results } = await env.prod_d1_tutorial.prepare(
    				"SELECT * FROM Customers WHERE CompanyName = ?",
    			)
    				.bind("Bs Beverages")
    				.run();
    			return Response.json(results);
    		}
    
    		return new Response(
    			"Call /api/beverages to see everyone who works at Bs Beverages",
    		);
    	},
    } satisfies ExportedHandler<Env>;
    entry.py
    from workers import Response, WorkerEntrypoint
    from urllib.parse import urlparse
    
    class Default(WorkerEntrypoint):
        async def fetch(self, request):
            pathname = urlparse(request.url).path
            if pathname == "/api/beverages":
                query = (
                    await self.env.prod_d1_tutorial.prepare(
                        "SELECT * FROM Customers WHERE CompanyName = ?",
                    )
                    .bind("Bs Beverages")
                    .run()
                )
                return Response.json(query.results)
            return Response(
                "Call /api/beverages to see everyone who works at Bs Beverages"
            )

    В приведенном выше коде вы:

    1. Определите привязку к базе данных D1 в своём коде. Эта привязка соответствует binding значение, которое вы задали в конфигурационный файл Wrangler в разделе d1_databases.
    2. Выполняйте запросы к базе данных с помощью env.prod_d1_tutorial.prepare чтобы выполнить подготовленный запрос с заполнителем (? в запросе).
    3. Вызовите bind() чтобы безопасно привязать значение к этому заполнителю. В реальном приложении вы бы разрешили пользователю передавать CompanyName, для которых они хотят получить список результатов. Используя bind() не позволяет пользователям выполнять произвольный SQL (известный как «SQL-инъекция») в отношении вашего приложения, а также удалять или иным образом изменять вашу базу данных.
    4. Выполните запрос, вызвав run() чтобы вернуть все строки (или ни одной, если запрос ничего не возвращает).
    5. Возвращает результаты запроса (если они есть) в формате JSON с помощью Response.json(results).

После настройки Worker вы можете протестировать проект локально, прежде чем развернуть его глобально.

Базу данных D1 можно запрашивать с помощью Worker.

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

    Перейдите в Workers & Pages ↗
  2. Выберите d1-tutorial Worker, который вы создали.

  3. Выберите Изменить код значок (</>).

  4. Очистите всё содержимое worker.js файл, а затем вставьте следующий код:

    export default {
    	async fetch(request, env) {
    		const { pathname } = new URL(request.url);
    
    		if (pathname === "/api/beverages") {
    			// If you did not use `DB` as your binding name, change it here
    			const { results } = await env.prod_d1_tutorial.prepare(
    				"SELECT * FROM Customers WHERE CompanyName = ?"
    			)
    				.bind("Bs Beverages")
    				.run();
    			return new Response(JSON.stringify(results), {
    				headers: { 'Content-Type': 'application/json' }
    			});
    		}
    
    		return new Response(
    			"Call /api/beverages to see everyone who works at Bs Beverages"
    		);
    	},
    };
  5. Выберите Save.

5. Разверните своё приложение

Разверните приложение в глобальной сети Cloudflare.

Чтобы развернуть Worker в продакшене с помощью Wrangler, сначала повторите конфигурация базы данных шаги после замены --local флаг с --remote флаг, чтобы предоставить вашему Worker данные для чтения. Это создаёт таблицы базы данных и импортирует данные в продакшен-версию вашей базы данных.

  1. Создавайте таблицы и добавляйте записи в удаленную базу данных с помощью schema.sql файл, который вы создали на шаге 4. Введите y чтобы подтвердить своё решение.

    npx wrangler d1 execute prod-d1-tutorial --remote --file=./schema.sql
    🌀 Executing on remote database prod-d1-tutorial (<DATABASE_ID>):
    🌀 To execute on your local development database, remove the --remote flag from your wrangler command.
    Note: if the execution fails to complete, your DB will return to its original state and you can safely retry.
    ├ 🌀 Uploading <DATABASE_ID>.a7f10c4651cc3a26.sql
    │ 🌀 Uploading complete.
    │
    🌀 Starting import...
    🌀 Processed 3 queries.
    🚣 Executed 3 queries in 0.00 seconds (5 rows read, 6 rows written)
    Database is currently at bookmark 00000000-0000000a-00004f6d-b85c16a3dbcf077cb8f258b4d4eb965e.
    ┌────────────────────────┬───────────┬──────────────┬────────────────────┐
    │ Total queries executed │ Rows read │ Rows written │ Database size (MB) │
    ├────────────────────────┼───────────┼──────────────┼────────────────────┤
    │ 3                      │ 5         │ 6            │ 0.02               │
    └────────────────────────┴───────────┴──────────────┴────────────────────┘
  2. Убедитесь, что данные есть в продакшене, выполнив:

    npx wrangler d1 execute prod-d1-tutorial --remote --command="SELECT * FROM Customers"
    
    ⛅️ wrangler 4.33.1
    ───────────────────
    🌀 Executing on remote database jun-d1-db-gs-2025 (cf91ec5c-fa77-4d49-ad8e-e22921b996b2):
    🌀 To execute on your local development database, remove the --remote flag from your wrangler command.
    🚣 Executed 1 command in 0.1797ms
    ┌────────────┬─────────────────────┬───────────────────┐
    │ CustomerId │ CompanyName         │ ContactName       │
    ├────────────┼─────────────────────┼───────────────────┤
    │ 1          │ Alfreds Futterkiste │ Maria Anders      │
    ├────────────┼─────────────────────┼───────────────────┤
    │ 4          │ Around the Horn     │ Thomas Hardy      │
    ├────────────┼─────────────────────┼───────────────────┤
    │ 11         │ Bs Beverages        │ Victoria Ashworth │
    ├────────────┼─────────────────────┼───────────────────┤
    │ 13         │ Bs Beverages        │ Random Name       │
    └────────────┴─────────────────────┴───────────────────┘
  3. Разверните свой Worker, чтобы сделать проект доступным в интернете. Выполните:

    npx wrangler deploy
    ⛅️ wrangler 4.33.1
    ────────────────────
    Total Upload: 0.52 KiB / gzip: 0.33 KiB
    Your Worker has access to the following bindings:
    Binding                                        Resource
    env.prod_d1_tutorial (prod-d1-tutorial)        D1 Database
    
    Uploaded prod-d1-tutorial (4.17 sec)
    Deployed prod-d1-tutorial triggers (3.49 sec)
    https://prod-d1-tutorial.pcx-team.workers.dev
    Current Version ID: 42c82f1c-ff2b-4dce-9ea2-265adcccd0d5

    Теперь можно перейти по URL-адресу только что созданного проекта, чтобы обратиться к рабочей базе данных.

    Например, если URL вашего нового Worker равен d1-tutorial.<YOUR_SUBDOMAIN>.workers.dev, обращаясь к https://d1-tutorial.<YOUR_SUBDOMAIN>.workers.dev/api/beverages отправляет запрос вашему Worker, который напрямую обращается к вашей действующей базе данных.

  4. Убедитесь, что база данных работает корректно. Добавьте /api/beverages по указанному URL-адресу Wrangler. Например, https://d1-tutorial.<YOUR_SUBDOMAIN>.workers.dev/api/beverages.

  1. На панели управления Cloudflare перейдите к разделу Workers & Pages страницу. Перейдите в Workers & Pages ↗
  2. Выберите свой d1-tutorial Worker.
  3. Выберите Развёртывания.
  4. Из раздела История версий таблицу, выберите Deploy version.
  5. Из раздела Deploy version странице выберите Развернуть.

Это разворачивает последнюю версию кода Worker в продакшене.

6. (Необязательно) Разрабатывайте локально с помощью Wrangler

Если вы используете D1 вместе с Wrangler, базу данных можно протестировать локально. Находясь в каталоге проекта, выполните:

  1. Запустите wrangler dev:

    npx wrangler dev

    Когда вы выполняете wrangler dev, Wrangler предоставляет URL-адрес (скорее всего, localhost:8787) чтобы просмотреть ваш Worker.

  2. Перейдите по URL-адресу.

    На странице отображаются Call /api/beverages to see everyone who works at Bs Beverages.

  3. Убедитесь, что база данных работает корректно. Добавьте /api/beverages по указанному URL-адресу Wrangler. Например, localhost:8787/api/beverages.

В случае успеха браузер отобразит ваши данные.

7. (Необязательно) Удалите свою базу данных

Чтобы удалить базу данных:

Выполните:

npx wrangler d1 delete prod-d1-tutorial
  1. На панели управления Cloudflare перейдите к разделу SQL-база данных D1 страницу.

    Перейдите в SQL-база данных D1 ↗
  2. Выберите свой prod-d1-tutorial базы данных D1.

  3. Выберите Настройки.

  4. Выберите Удалить.

  5. Введите имя базы данных (prod-d1-tutorial) чтобы подтвердить удаление.

Если вы хотите удалить Worker:

Выполните:

npx wrangler delete d1-tutorial
  1. На панели управления Cloudflare перейдите к разделу Workers & Pages страницу.

    Перейдите в Workers & Pages ↗
  2. Выберите свой d1-tutorial Worker.

  3. Выберите Настройки.

  4. Прокрутите страницу до конца, затем выберите Удалить.

  5. Введите имя Worker (d1-tutorial) чтобы подтвердить удаление.

Сводка

В этом руководстве вы выполнили следующее:

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

Если у вас есть пожелания по функциям или вы заметили ошибку, поделитесь отзывом напрямую с командой Cloudflare, присоединившись к Сообщество разработчиков Cloudflare в Discord.