Skip to content

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.

Database Integrations allow you to connect to a database from your Worker by getting the right configuration from your database provider and adding it as secrets to your Worker.

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. Add the Xata integration to your Worker:

    1. Log in to the Cloudflare dashboard and select your account.
    2. In Account Home, select Workers & Pages.
    3. In Overview, select your Worker.
    4. Select Integrations > Xata.
    5. Follow the setup flow, selecting the database created in step 1.
  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 automatically added as secrets to your Worker through the integration.

    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.