Database

The Database node reads and writes rows in your Supabase project. The data stays yours; we only make the requests.

Connecting

Profile → Database. Two things from Supabase (Settings → API):

  • Project URL — like https://abcdefgh.supabase.co
  • Keyservice_role bypasses row level security, anon does not

There is a check next to it: name a table and we read one row from it to confirm the URL, the key and the table name. One connection per user; the key is stored on our side and shown only as a few characters.

Operations

OperationWhat it does
selectreads rows, with filters, ordering and a limit
insertadds a row or an array of rows
updatechanges the rows a filter matches
upsertinserts or updates by a duplicate column
deleteremoves the rows a filter matches

Filters

Filters are JSON of column to PostgREST expression:

{"id": "eq.{{outputs.incoming.body.id}}", "total": "gte.100"}

Operators: eq, neq, gt, gte, lt, lte, like, ilike, in, is.

An update or delete without a filter is refused — otherwise one mistake in a template would wipe the table. The request never reaches the network.

Rows

For insert, upsert and update the Rows field is JSON:

{"title": "{{outputs.incoming.body.title}}", "paid": true}

An array writes several rows in one request.

What comes out

rows is the array, count is how many matched, first is the first row or null. Usually you want first:

{{ outputs.save_order.first.id }}

Limits

A select returns at most 1000 rows, 100 by default — page with offset for more. A request waits at most 20 seconds for the database.