INTEGRITY Dokumentace

Začínáme

Tento návod vás provede:

Tyto úkoly můžete provádět přes CLI nebo přes Cloudflare dashboard.

Rychlý start

Pokud chcete kroky přeskočit a rychle začít, klikněte na tlačítko níže.

Deploy to Cloudflare

Tím se vytvoří repozitář ve vašem účtu GitHub a aplikace se nasadí na Cloudflare Workers. Tuto možnost použijte, pokud Cloudflare Workers dobře znáte a chcete přeskočit podrobné pokyny krok za krokem.

Pokud s Cloudflare Workers teprve začínáte, můžete kroky projít ručně.

Předpoklady

  1. Zaregistrujte si účet Cloudflare.
  2. Nainstalujte Node.js.

Správce verzí Node.js

Použijte správce verzí Node, jako je Volta nebo nvm abyste se vyhnuli problémům s oprávněními a mohli měnit verze Node.js. Wrangler, o kterém se dozvíte dále v této příručce, vyžaduje verzi Node 16.17.0 nebo novější.

1. Vytvořte Worker

Vytvořte nový Worker, pomocí kterého budete databázi dotazovat.

  1. Vytvořte nový projekt s názvem d1-tutorial spuštěním:

    npm create cloudflare@latest -- d1-tutorial

    Při nastavení vyberte následující možnosti:

    • Pro S čím byste chtěli začít?, vyberte Hello World example.
    • Pro Jakou šablonu chcete použít?, vyberte Worker only.
    • Pro Jaký jazyk chcete použít?, vyberte TypeScript.
    • Pro Chcete používat git pro správu verzí?, vyberte Yes.
    • Pro Chcete nasadit svou aplikaci?, vyberte No (před nasazením provedeme ještě několik změn).

    Tím se vytvoří nová d1-tutorial adresáře, jak je znázorněno níže.

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

    Váš nový d1-tutorial adresář obsahuje:

  1. V dashboardu Cloudflare přejděte na Workers & Pages . Přejděte na Workers & Pages ↗
  2. Vyberte Vytvoření aplikace.
  3. Vyberte Začněte s Hello World! > Začínáme.
  4. Pojmenujte svého Workera. Pro účely tohoto tutoriálu pojmenujte svého Workera d1-tutorial.
  5. Vyberte Nasadit.

2. Vytvořte databázi

Databáze D1 je koncepčně podobná mnoha jiným SQL databázím: databáze může obsahovat jednu nebo více tabulek, umožňuje nad nimi provádět dotazy a volitelně obsahuje indexy. D1 využívá známý Dotazovací jazyk SQL (jak se používá v SQLite).

Chcete-li vytvořit svou první databázi D1:

  1. Přejděte do adresáře, který jste právě vytvořili pro svůj projekt Workers:

    cd d1-tutorial
  2. Spusťte následující wrangler@latest d1 příkaz a zadejte název databáze. V tomto návodu se databáze jmenuje 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. Po zobrazení výzvy: Would you like Wrangler to add it on your behalf?, vyberte Yes. Tím se vazba automaticky přidá do konfiguračního souboru Wrangler.

Tím se vytvoří nová databáze D1 a zobrazí se binding konfiguraci potřebnou v dalším kroku.

  1. V dashboardu Cloudflare přejděte na SQL databáze D1 stránce.

    Přejděte na SQL databáze D1 ↗
  2. Vyberte Create Database.

  3. Pojmenujte databázi. Pro účely tohoto tutoriálu pojmenujte databázi D1 prod-d1-tutorial.

  4. (Volitelné) Zadejte location hint. Location hint je volitelný parametr, kterým můžete určit požadované geografické umístění vaší databáze. Více informací najdete v Zadejte nápovědu umístění s dalšími informacemi.

  5. Vyberte Vytvořit.

3. Svažte svůj Worker s databází D1

Aby se váš Worker mohl připojit k databázi D1, musíte vytvořit binding. Bindings umožňují vašim Workers přistupovat k prostředkům, jako je D1, na vývojářské platformě Cloudflare.

Chcete-li svázat databázi D1 s Workerem:

Binding můžete automaticky přidat do konfiguračního souboru Wrangler při spuštění příkazu wrangler d1 create příkaz (krok 3 z 2. Vytvořte databázi).

Pokud však chcete přidat vazbu ručně, postupujte podle následujících kroků:

  1. Zkopírujte řádky získané v kroku 2 z 2. Vytvořte databázi z terminálu.

  2. Přidejte je na konec souboru 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>"

    Konkrétně:

    • Hodnota (řetězec), kterou nastavíte pro binding je název bindingu, a slouží k odkazování na tuto databázi ve vašem Workeru. V tomto tutoriálu pojmenujte svou vazbu prod_d1_tutorial.
    • Název bindingu musí být platný název proměnné v JavaScriptu. Například binding = "MY_DB" nebo binding = "productionDB" by byly oba platné názvy pro binding.
    • Váš binding je ve Workeru dostupný na env.<BINDING_NAME> a D1 Workers Binding API je dostupný v rámci tohoto bindingu.

Databázi D1 můžete také propojit s Pages Function. Další informace najdete v Functions Bindings pro D1.

Bindings vytvoříte tak, že je přidáte k vytvořenému Workeru.

  1. V dashboardu Cloudflare přejděte na Workers & Pages . Přejděte na Workers & Pages ↗
  2. Vyberte d1-tutorial Worker, který jste vytvořili v krok 1.
  3. Přejděte na Bindings kartě.
  4. Vyberte Add binding.
  5. Vyberte databáze D1 > Add binding.
  6. Pojmenujte binding v Název proměnné, poté vyberte prod-d1-tutorial databáze D1, kterou jste vytvořili v krok 2 z rozbalovací nabídky. Pro účely tohoto návodu pojmenujte binding prod_d1_tutorial.
  7. Vyberte Add binding.

4. Spusťte dotaz nad svou databází D1

Naplnění databáze D1 daty

Po správné přípravě Konfigurační soubor Wrangler, nastavte databázi. Vytvořte schema.sql soubor pomocí níže uvedené syntaxe SQL a inicializujte tak svou databázi.

  1. Zkopírujte následující kód a uložte jej jako schema.sql soubor v d1-tutorial adresář Workeru, který jste vytvořili v kroku 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. Databázi nejprve inicializujte pro lokální spuštění a testování. Novou databázi D1 vytvořte spuštěním:

    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. Ověřte, že jsou vaše data v databázi, spuštěním:

    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       │
     └────────────┴─────────────────────┴───────────────────┘

Pomocí Dashboardu vytvořte tabulku a naplňte ji daty.

  1. V dashboardu Cloudflare přejděte na SQL databáze D1 stránce.

    Přejděte na SQL databáze D1 ↗
  2. Vyberte prod-d1-tutorial databázi, kterou jste vytvořili v krok 2.

  3. Vyberte Konzole.

  4. Vložte následující úryvek 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. Vyberte Spustit. Tím se vytvoří tabulka s názvem Customers ve vašem prod-d1-tutorial databáze.

  6. Vyberte Tabulky, poté vyberte Customers tabulku pro zobrazení obsahu tabulky.

Zápisové dotazy ve vašem Workeru

Jakmile máte databázi nastavenou, spusťte SQL dotaz přímo z Workeru.

  1. Přejděte do svého d1-tutorial Worker a otevřete index.ts soubor. index.ts soubor slouží ke konfiguraci interakcí vašeho Workeru s D1.

  2. Vymažte obsah index.ts.

  3. Vložte následující úryvek kódu do index.ts soubor:

    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"
            )

    V kódu výše:

    1. Definujte binding pro svou databázi D1 ve svém kódu. Tento binding odpovídá binding hodnotu, kterou jste nastavili v Konfigurační soubor Wrangler v části d1_databases.
    2. Dotazujte databázi pomocí env.prod_d1_tutorial.prepare k vydání připravený dotaz se zástupným symbolem (tím ? v dotazu).
    3. Zavolejte bind() k bezpečnému navázání hodnoty na tento zástupný symbol. Ve skutečné aplikaci byste uživateli umožnili předat CompanyName pro který chtějí zobrazit výsledky. Pomocí bind() brání uživatelům spouštět libovolný SQL kód (známý jako „SQL injection“) proti vaší aplikaci a mazat nebo jinak upravovat vaši databázi.
    4. Dotaz proveďte zavoláním run() k vrácení všech řádků (nebo žádných, pokud dotaz žádné nevrátí).
    5. Výsledky dotazu, pokud nějaké existují, vraťte ve formátu JSON pomocí Response.json(results).

Po nakonfigurování Workeru můžete projekt otestovat lokálně ještě před globálním nasazením.

Databázi D1 můžete dotazovat pomocí svého Workeru.

  1. V dashboardu Cloudflare přejděte na Workers & Pages stránce.

    Přejděte na Workers & Pages ↗
  2. Vyberte d1-tutorial Worker, který jste vytvořili.

  3. Vyberte Upravit kód ikonu (</>).

  4. Vymažte veškerý obsah worker.js soubor a vložte následující kód:

    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. Vyberte Save.

5. Nasaďte svou aplikaci

Nasaďte svou aplikaci na globální síti Cloudflare.

Chcete-li nasadit Worker do produkce pomocí Wrangleru, musíte nejprve zopakovat konfigurace databáze kroky po nahrazení --local příznak s --remote příznak, aby měl váš Worker data ke čtení. Tím se vytvoří tabulky databáze a data se naimportují do produkční verze vaší databáze.

  1. Tabulky a záznamy do vzdálené databáze přidáte pomocí schema.sql soubor, který jste vytvořili v kroku 4. Zadejte y pro potvrzení rozhodnutí.

    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. Ověřte, že jsou data v produkčním prostředí, spuštěním:

    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. Nasaďte svého Workera, aby byl váš projekt dostupný na internetu. Spusťte:

    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

    Nyní můžete navštívit URL adresu nově vytvořeného projektu a spustit dotaz do vaší ostré databáze.

    Pokud je například URL vašeho nového Workeru d1-tutorial.<YOUR_SUBDOMAIN>.workers.dev, přístupem k https://d1-tutorial.<YOUR_SUBDOMAIN>.workers.dev/api/beverages odesílá požadavek do vašeho Workeru, který přímo dotazuje vaši živou databázi.

  4. Ověřte, že vaše databáze funguje správně. Přidejte /api/beverages na poskytnutou adresu URL Wrangleru. Například https://d1-tutorial.<YOUR_SUBDOMAIN>.workers.dev/api/beverages.

  1. V dashboardu Cloudflare přejděte na Workers & Pages . Přejděte na Workers & Pages ↗
  2. Vyberte svůj d1-tutorial Worker.
  3. Vyberte Deployments.
  4. Z Historie verzí tabulku vyberte Deploy version.
  5. Z Deploy version stránce vyberte Nasadit.

Tím se do produkce nasadí nejnovější verze kódu Workeru.

6. (Volitelné) Vyvíjejte lokálně pomocí Wrangler

Pokud používáte D1 s Wrangler, můžete databázi otestovat lokálně. V adresáři projektu spusťte:

  1. Spustit wrangler dev:

    npx wrangler dev

    Když spustíte wrangler dev, Wrangler poskytne adresu URL (nejspíše localhost:8787) pro kontrolu vašeho Workeru.

  2. Přejděte na tuto adresu URL.

    Stránka zobrazuje Call /api/beverages to see everyone who works at Bs Beverages.

  3. Ověřte, že vaše databáze funguje správně. Přidejte /api/beverages na poskytnutou adresu URL Wrangleru. Například localhost:8787/api/beverages.

V případě úspěchu prohlížeč zobrazí vaše data.

7. (Volitelné) Odstraňte svou databázi

Chcete-li odstranit databázi:

Spusťte:

npx wrangler d1 delete prod-d1-tutorial
  1. V dashboardu Cloudflare přejděte na SQL databáze D1 stránce.

    Přejděte na SQL databáze D1 ↗
  2. Vyberte svůj prod-d1-tutorial databáze D1.

  3. Vyberte Nastavení.

  4. Vyberte Smazat.

  5. Zadejte název databáze (prod-d1-tutorial) pro potvrzení smazání.

Pokud chcete Worker odstranit:

Spusťte:

npx wrangler delete d1-tutorial
  1. V dashboardu Cloudflare přejděte na Workers & Pages stránce.

    Přejděte na Workers & Pages ↗
  2. Vyberte svůj d1-tutorial Worker.

  3. Vyberte Nastavení.

  4. Přejděte na konec stránky a poté vyberte Smazat.

  5. Zadejte název Workeru (d1-tutorial) pro potvrzení smazání.

Souhrn

V tomto tutoriálu jste:

Další kroky

Pokud máte požadavky na nové funkce nebo jste narazili na chyby, sdílejte zpětnou vazbu přímo s týmem Cloudflare, a to prostřednictvím Komunita vývojářů Cloudflare na Discordu.