Cloudflare Docs
Workers
Workers
Visit Workers on GitHub
Set theme to dark (⇧+D)

Supabase

Supabase is an open source Firebase alternative and a PostgreSQL database service that offers real-time functionality, database backups, and extensions. With Supabase, developers can quickly set up a PostgreSQL database and build applications.

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 Supabase

To set up an integration with Supabase:

  1. You need to have an existing Supabase database to connect to. Create a Supabase database or have an existing database to connect to Supabase and load data from.

  2. Create a countries table with the following query. You can create a table in your Supabase dashboard in two ways:


    CREATE TABLE countries (
    id SERIAL PRIMARY KEY,
    name VARCHAR(255) NOT NULL
    );
  3. Insert some data in your newly created table. Run the following commands to add countries to your table:


    INSERT INTO countries (name) VALUES ('United States');
    INSERT INTO countries (name) VALUES ('Canada');
    INSERT INTO countries (name) VALUES ('The Netherlands');
  4. Add the Supabase database 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 Settings > Integrations > Supabase.
    5. Follow the setup flow, selecting the database created in step 1.
  5. In your Worker, install the @supabase/supabase-js driver to connect to your database and start manipulating data:


    npm install @supabase/supabase-js
  6. The following example shows how to make a query to your Supabase database in a Worker. The credentials needed to connect to Supabase have been automatically added as secrets to your Worker through the integration.


    import { createClient } from '@supabase/supabase-js';
    export default {
    async fetch(request, env) {
    const supabase = createClient(env.SUPABASE_URL, env.SUPABASE_KEY);
    const { data, error } = await supabase.from("countries").select('*');
    if (error) throw error;
    return new Response(JSON.stringify(data), {
    headers: {
    "Content-Type": "application/json",
    },
    });
    },
    };

To learn more about Supabase, refer to Supabase’s official documentation.