Konektor Supabase

Propojte svůj projekt Supabase pro synchronizaci databázových záznamů, dat ověřování uživatelů, událostí úložiště souborů a změn v reálném čase pro automatizaci zapojení zákazníků.

Přehled

VlastnostHodnota
PlatformaSupabase
KategorieDatabáze a backend
Složitost nastaveníSnadná
Oficiální integraceAno
Synchronizovaná dataUživatelé, Tabulky, Úložiště, Události
Dostupné dovednosti11
Typ APIREST (PostgREST) + WebSocket v reálném čase
Oficiální dokumentacesupabase.com/docs

Funkce

  • Automaticky generované REST API – CRUD operace na libovolné tabulce Postgres přes PostgREST, bez kódu
  • Synchronizace uživatelů Auth – Synchronizujte uživatele Supabase Auth (e-mail, telefon, sociální přihlášení) do vaší platformy zapojení
  • Odběry v reálném čase – Naslouchejte událostem INSERT, UPDATE, DELETE na libovolné tabulce v reálném čase
  • Row Level Security – Veškerý přístup API respektuje politiky Postgres RLS pro bezpečná multi-tenantní data
  • Integrace úložiště – Sledujte nahrávání souborů a spravujte prostředky napříč buckety Storage
  • Edge Functions – Vyvolávejte serverless Deno funkce pro vlastní logiku a webhooky
  • Fulltextové vyhledávání – Využívejte možnosti fulltextového vyhledávání Postgres přes API

Předpoklady

Než začnete, ujistěte se, že máte:

  1. Projekt Supabase (app.supabase.com)
  2. API URL a API klíče projektu (nalezené v Settings → API)
  3. Účet Tajo s přístupem k API

API klíče

Supabase poskytuje dva klíče: anon (veřejný, respektuje RLS) a service_role (obchází RLS, administrátorský přístup). Používejte service_role pro integrace na straně serveru a anon pro stranu klienta.

Ověření

Supabase používá ověřování API klíčem. Každý požadavek vyžaduje hlavičku apikey a volitelně bearer token Authorization pro přístup v rozsahu uživatele.

Terminal window
# Použití anonymního klíče (respektuje RLS)
curl 'https://<project_ref>.supabase.co/rest/v1/customers' \
-H "apikey: <SUPABASE_ANON_KEY>" \
-H "Authorization: Bearer <SUPABASE_ANON_KEY>"
# Použití klíče service_role (obchází RLS)
curl 'https://<project_ref>.supabase.co/rest/v1/customers' \
-H "apikey: <SUPABASE_SERVICE_ROLE_KEY>" \
-H "Authorization: Bearer <SUPABASE_SERVICE_ROLE_KEY>"

Konfigurace

Základní nastavení

connectors:
supabase:
enabled: true
project_url: "https://xyzcompany.supabase.co"
api_key: "${SUPABASE_SERVICE_ROLE_KEY}"
# Možnosti synchronizace dat
sync:
users: true
tables:
- customers
- orders
- products
storage: true
realtime: true
# Mapování uživatelů Auth Supabase na kontakty
user_mapping:
email: email
phone: SMS
user_metadata.full_name: FIRSTNAME
created_at: SIGNUP_DATE

Mapování polí

Mapujte sloupce tabulky Supabase na atributy platformy zapojení:

Výchozí mapování uživatelů

Parameter Type Description
email required
string

E-mail uživatele z Supabase Auth (jedinečný identifikátor)

phone optional
string

Telefonní číslo pro zapojení přes SMS/WhatsApp

user_metadata.full_name optional
string

Zobrazované jméno z metadat uživatele Auth

user_metadata.avatar_url optional
string

URL profilového obrázku

created_at optional
timestamp

Časové razítko vytvoření účtu

last_sign_in_at optional
timestamp

Poslední přihlášení pro skórování zapojení

app_metadata.provider optional
string

Poskytovatel Auth (email, google, github atd.)

confirmed_at optional
timestamp

Časové razítko potvrzení e-mailu

Mapování vlastní tabulky

table_mapping:
customers:
# Mapování sloupec → atribut
email: email
full_name: FIRSTNAME
company: COMPANY
plan: SUBSCRIPTION_PLAN
mrr: MONTHLY_REVENUE
created_at: SIGNUP_DATE
orders:
# Sledovat jako události
sync_as: events
event_name: "order_placed"
properties:
total: amount
status: order_status
items: line_items

Koncové body API

REST API Supabase je automaticky generováno ze schématu databáze na adrese https://<ref>.supabase.co/rest/v1/.

Koncový bodMetodaPopis
/rest/v1/{table}GETDotaz na řádky s filtrováním, řazením, stránkováním
/rest/v1/{table}POSTVložení řádků (podporuje hromadné vkládání a upsert)
/rest/v1/{table}PATCHAktualizace řádků odpovídajících filtrům
/rest/v1/{table}DELETESmazání řádků odpovídajících filtrům
/rest/v1/rpc/{function}POSTVolání funkce Postgres
/auth/v1/signupPOSTVytvoření nového uživatele
/auth/v1/token?grant_type=passwordPOSTPřihlášení heslem
/auth/v1/userGETZískání aktuálního uživatele
/auth/v1/admin/usersGETVýpis všech uživatelů (service_role)
/storage/v1/object/{bucket}/{path}POSTNahrání souboru
/storage/v1/object/list/{bucket}POSTVýpis souborů v bucketu
/functions/v1/{function_name}POSTVyvolání Edge Function

Operátory filtrování

OperátorPopisPříklad
eqRovná se?status=eq.active
neqNerovná se?status=neq.deleted
gt, gteVětší než?amount=gt.100
lt, lteMenší než?created_at=lt.2024-01-01
like, ilikeVzorová shoda?name=ilike.%john%
inV poli?status=in.(active,trial)
isKontrola null?deleted_at=is.null

Události

Události Auth

UdálostSpouštěčPřípad použití
user.signed_upRegistrace nového uživateleUvítací série
user.signed_inPřihlášení uživateleSledování aktivity
user.updatedZměny profiluSynchronizace dat
user.deletedSmazání účtuPracovní toky úklidu

Události databáze (Realtime)

UdálostSpouštěčPřípad použití
INSERTPřidán nový řádekNotifikace o nové objednávce/zákazníkovi
UPDATEŘádek upravenPracovní toky změny stavu
DELETEŘádek odstraněnDetekce odchodu

Webhookové události

UdálostSpouštěčPřípad použití
auth.user.createdRegistrace uživatele přes webhookSpuštění onboardingu
storage.object.createdNahraný souborZpracování prostředků

Příklady kódu

Inicializace konektoru

import { TajoClient } from '@tajo/sdk';
import { createClient } from '@supabase/supabase-js';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
});
// Připojení projektu Supabase
await tajo.connectors.connect('supabase', {
projectUrl: process.env.SUPABASE_URL,
serviceRoleKey: process.env.SUPABASE_SERVICE_ROLE_KEY,
});

Synchronizace uživatelů do kontaktů

// Synchronizace všech uživatelů Supabase Auth jako kontaktů
await tajo.connectors.sync('supabase', {
type: 'full',
resources: ['users'],
});
// Přírůstková synchronizace (pouze noví/změnění uživatelé)
await tajo.connectors.sync('supabase', {
type: 'incremental',
resources: ['users'],
since: '2024-01-01T00:00:00Z',
});

Naslouchání změnám v reálném čase

// Přihlášení k odběru nových objednávek pro spouštěče zapojení
const supabase = createClient(
process.env.SUPABASE_URL,
process.env.SUPABASE_SERVICE_ROLE_KEY
);
supabase
.channel('orders')
.on('postgres_changes',
{ event: 'INSERT', schema: 'public', table: 'orders' },
async (payload) => {
// Přepošlete do Tajo jako událost
await tajo.events.track({
email: payload.new.customer_email,
event: 'order_placed',
properties: {
order_id: payload.new.id,
total: payload.new.total,
items: payload.new.line_items,
},
});
}
)
.subscribe();

Dotaz a segmentace

// Dotaz na zákazníky podle plánu pro cílené kampaně
const { data: proUsers } = await supabase
.from('customers')
.select('email, full_name, plan, mrr')
.eq('plan', 'pro')
.gt('mrr', 100)
.order('mrr', { ascending: false });
// Synchronizace do seznamu Brevo pro cílení kampaní
await tajo.lists.addContacts(PRO_LIST_ID, proUsers);

Omezení rychlosti

Limity rychlosti API

Limity rychlosti Supabase závisí na vašem plánu. Plán Free: 500 požadavků/minutu. Pro: 1 000 požadavků/sekundu. Kontaktujte Supabase pro limity Enterprise.

PlánLimit rychlostiPřipojení Realtime
Free500 požadavků/min200 souběžných
Pro1 000 požadavků/s500 souběžných
Team2 000 požadavků/s1 000 souběžných
EnterpriseVlastníVlastní

Řešení problémů

Časté problémy

ProblémPříčinaŘešení
401 UnauthorizedNeplatný nebo vypršelý API klíčZkontrolujte API klíče v Supabase Dashboard → Settings → API
403 ForbiddenRLS politika blokuje přístupPoužívejte klíč service_role pro admin operace nebo zkontrolujte RLS politiky
Žádné Realtime událostiRealtime není povoleno pro tabulkuPovolte v Database → Replication → přidejte tabulku do publikace
Prázdné výsledky dotazuRLS filtruje všechny řádkyOvěřte, zda RLS politiky umožňují ověřené roli čtení
Nahrávání do Storage selháváPolitiky bucketuZkontrolujte, zda je bucket Storage nastaven jako veřejný nebo má správné RLS politiky

Režim ladění

connectors:
supabase:
debug: true
log_level: verbose
log_queries: true
log_realtime: true

Test připojení

Terminal window
tajo connectors test supabase
# ✓ Připojení API úspěšné
# ✓ Koncový bod Auth přístupný
# ✓ Tabulky čitelné (nalezeno 12 tabulek)
# ✓ Storage přístupný (3 buckety)
# ✓ Připojení Realtime navázáno
# ✓ Edge Functions dostupné (4 funkce)

Osvědčené postupy

  1. Používejte klíč service_role pouze na straně serveru – Nikdy ho nezveřejňujte v klientském kódu
  2. Povolte RLS na všech tabulkách – I s service_role navrhujte s ohledem na RLS pro hloubkovou ochranu
  3. Používejte Realtime pro synchronizaci řízenou událostmi – Efektivnější než polling pro sledování změn
  4. Dávkové operace – Používejte hromadné vkládání a filtr in pro operace s vysokým objemem
  5. Mapujte metadata uživatelů – Ukládejte pole relevantní pro zapojení v user_metadata při registraci
  6. Používejte Edge Functions pro webhooky – Zpracovávejte příchozí webhooky pomocí Supabase Edge Functions pro zpracování s nízkou latencí

Zabezpečení

  • Ověřování API klíčem – Všechny požadavky vyžadují platné API klíče
  • Row Level Security (RLS) – Řízení přístupu nativní v Postgres na úrovni řádků
  • Ověřování JWT – Auth tokeny jsou podepsané JWT ověřované u každého požadavku
  • SSL/TLS – Všechna spojení šifrovaná při přenosu
  • SOC 2 Type II – Supabase splňuje SOC 2
  • Síťová omezení – Volitelný whitelisting IP na placených plánech

Související zdroje

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI asistent

Ahoj! Zeptejte se mě na dokumentaci.