Skip to content
Cloudflare Docs

Xata

Xata is a serverless data platform powered by PostgreSQL. Xata uniquely combines multiple types of stores (relational databases, search engines, analytics engines) into a single service, accessible through a consistent REST API.

Set up an integration with Xata

To set up an integration with Xata:

  1. You need to have an existing Xata database to connect to or create a new database from your Xata workspace Create a Database.

  2. In your database, you have several options for creating a table: you can start from scratch, use a template filled with sample data, or import data from a CSV file. For this guide, choose Start with sample data. This option automatically populates your database with two sample tables: Posts and Users.

  3. Configure the Xata database credentials in your Worker:

    You need to add your Xata database credentials as secrets to your Worker. First, get your database details from your Xata Dashboard, then add them as secrets using Wrangler:

    Terminal window
    # Add the Xata API key as a secret
    npx wrangler secret put XATA_API_KEY
    # When prompted, paste your Xata API key
    # Add the Xata branch as a secret
    npx wrangler secret put XATA_BRANCH
    # When prompted, paste your Xata branch name (usually 'main')
    # Add the Xata database URL as a secret
    npx wrangler secret put XATA_DATABASE_URL
    # When prompted, paste your Xata database URL
  4. Install the Xata CLI and authenticate the CLI by running the following commands:

    Terminal window
    npm install -g @xata.io/cli
    xata auth login
  5. Once you have the CLI set up, In your Worker, run the following code in the root directory of your project:

    Terminal window
    xata init

    Accept the default settings during the configuration process. After completion, a .env and .xatarc file will be generated in your project folder.

  6. To enable Cloudflare access the secret values generated when running in development mode, create a .dev.vars file in your project's root directory and add the following content, replacing placeholders with the specific values:

    XATA_API_KEY=<YOUR_API_KEY_HERE>
    XATA_BRANCH=<YOUR_BRANCH_HERE>
    XATA_DATABASE_URL=<YOUR_DATABASE_URL_HERE>
  7. The following example shows how to make a query to your Xata database in a Worker. The credentials needed to connect to Xata have been added as secrets to your Worker.

    export default {
    async fetch(request, env, ctx): Promise<Response> {
    const xata = new XataClient({
    apiKey: env.XATA_API_KEY,
    branch: env.XATA_BRANCH,
    databaseURL: env.XATA_DATABASE_URL,
    });
    const records = await xata.db.Posts.select([
    "id",
    "title",
    "author.name",
    "author.email",
    "author.bio",
    ]).getAll();
    return Response.json(records);
    },
    } satisfies ExportedHandler<Env>;

To learn more about Xata, refer to Xata's official documentation.