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 - Key —
service_rolebypasses row level security,anondoes 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
| Operation | What it does |
|---|---|
select | reads rows, with filters, ordering and a limit |
insert | adds a row or an array of rows |
update | changes the rows a filter matches |
upsert | inserts or updates by a duplicate column |
delete | removes 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.
Anupdateordeletewithout 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.